RAG 增强编程助手架构设计
检索增强生成(RAG)通过检索相关代码片段作为上下文,让 LLM 生成更符合项目规范的代码,减少幻觉和风格不一致。
核心架构
RAG 编程助手包含四个模块:索引模块(解析、分块、向量化)、检索模块(编码、搜索、重排序)、生成模块(上下文注入、代码生成)、反馈模块(质量评估、索引更新)。
python
class RAGCodingAssistant:
def generate(self, query, project_context):
results = self.retriever.search(query=query, top_k=10,
filters={"language": project_context["language"]})
reranked = self.reranker.rank(query, results)
context = self.format_context(reranked[:5])
prompt = f"项目上下文:\n{context}\n\n用户请求:{query}"
return self.llm.generate(prompt)代码分块策略
- 函数级分块:以函数为单位,保持语义完整
- 类级分块:以类定义为单位,包含所有方法
- 文件级分块:整个文件作为一个块
- 滑动窗口:固定大小窗口,带重叠
分块粒度选择
函数级分块通常效果最好——既保持语义完整性,又不引入过多无关代码。短文件(<200行)用文件级更简单有效。