RAG 的核心组成部分如下:
1. 检索模块(Retriever)
- 查询编码器(Query Encoder):将用户输入的查询转换为向量表示,使用与文档索引相同的嵌入模型,确保查询与文档在统一的向量空间中可比
- 向量数据库(Vector Database):存储预先处理后的文档向量表示,支持高效的语义相似度搜索,常用系统包括腾讯云向量数据库、FAISS、Milvus、Pinecone、Weaviate、Qdrant、Chroma 以及 pgvector 等
- 检索算法:结合向量搜索(语义相似度)与关键词搜索(如BM25算法),通过混合检索提升召回率;许多RAG系统还引入重排序模型(Reranker)对检索结果进行二次精排
2. 生成模块(Generator)
- 大语言模型(LLM):接收用户查询与检索到的相关上下文,生成自然语言响应;常用模型包括 GPT-5.2、Gemini 3 、Claude 4.7、Qwen 、混元等
- 提示词组装器(Prompt Assembler):将检索到的相关文本片段与原始查询组织成结构化的提示词,为生成模型提供充分的上下文信息
- 输出后处理:对生成结果进行过滤、格式化、引用标注等处理,确保输出的可信度和可用性
3. 知识库与数据处理模块
- 数据摄取(Ingestion):从多种来源(PDF文档、网页、数据库、API等)收集原始数据,支持结构化与非结构化数据
- 文本分块(Chunking):将长文档分割为适当大小的文本片段,常用策略包括固定长度分块、递归字符分块、语义分块等,分块质量直接影响检索效果
- 嵌入模型(Embedding Model):将文本转换为高维向量表示,常用模型包括 text-embedding-4-large、text-embedding-3-large、EmbeddingGemma-300M、text-embedding-005、voyage-3.5、embed-v4.0、Qwen3-Embedding、BGE-M3、Nomic Embed Text V2 等
- 索引构建(Indexing):将文本块的向量表示存储在向量数据库中,建立高效的检索索引(如HNSW、IVF等算法)