微软 RAG 框架与 GraphRAG 技术深度解析
什么是 RAG 框架?
检索增强生成(Retrieval-Augmented Generation,简称 RAG)是一种将信息检索与大语言模型(LLM)相结合的技术架构。其核心目的是解决传统 LLM 在知识时效性、事实准确性以及私有数据利用方面的局限性。
为什么需要 RAG?
传统的预训练大模型(如 GPT 系列)存在以下痛点:
- 知识截止:模型参数固定,无法获取训练数据之后的新知识。
- 幻觉问题:模型可能编造看似合理但实际错误的事实。
- 私有数据隔离:企业敏感数据难以直接融入通用模型的训练过程。
RAG 通过引入外部知识库,让模型在生成回答前先检索相关文档,从而'基于事实'进行生成,显著提升了回答的准确性和可追溯性。
RAG 的核心工作原理
RAG 系统通常包含两个主要阶段:索引构建与查询生成。
-
索引阶段(Indexing):
- 将非结构化数据(如 PDF、网页、数据库记录)进行清洗和分块(Chunking)。
- 使用嵌入模型(Embedding Model)将文本块转换为向量表示。
- 将向量存储到向量数据库中(如 Milvus, Pinecone, Chroma)。
-
查询阶段(Querying):
- 检索:用户提问被转化为向量,在向量库中搜索相似度最高的 Top-K 文档片段。
- 增强:将检索到的文档片段作为上下文(Context),与用户问题拼接。
- 生成:将增强后的提示词(Prompt)发送给 LLM,生成最终答案。
# 简化的 RAG 流程伪代码示例
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.llms import HuggingFacePipeline
def rag_query(query):
# 1. 检索相关文档
docs = vector_store.similarity_search(query, k=3)
# 2. 构建 Prompt
context = "\n\n".join([doc.page_content for doc in docs])
prompt = f"""基于以下信息回答问题:
{context}
问题:{query}
"""
# 3. 生成回答
response = llm.generate(prompt)
return response


