菜单

检索增强生成 (RAG)

相关源文件

检索增强生成 (RAG) 是一种结合信息检索与文本生成的技术,用于创建能够访问和推理大型知识库的应用程序。本页面介绍了 OpenAI Cookbook 中的 RAG 实现,包括向量数据库集成、嵌入工作流以及构建 RAG 驱动应用程序的实际示例。

有关基本的嵌入和向量搜索技术,请参阅嵌入和向量搜索。有关知识检索的函数调用方法,请参阅知识检索的函数调用

核心 RAG 架构

RAG 系统遵循两阶段过程:首先从知识库中检索相关上下文,然后使用该上下文进行生成。OpenAI Cookbook 展示了跨多个向量数据库提供商的这种模式。

RAG 工作流组件

来源:examples/vector_databases/pinecone/Gen_QA.ipynb14-28 examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb24-31

向量数据库生态系统

该 Cookbook 支持多种向量数据库提供商,每种都有特定的集成模式

来源:examples/vector_databases/README.md1-33 examples/vector_databases/pinecone/Gen_QA.ipynb586-608 examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb92-102

实现模式

文档处理与索引

该 Cookbook 展示了为 RAG 准备文档的标准模式

组件实现目的
文本分块window = 20, stride = 4创建重叠块以获得更好的上下文
嵌入生成openai.Embedding.create(input=texts, engine=embed_model)将文本转换为向量
批处理batch_size = 100高效的批量操作
元数据存储存储 urltitletextpublished启用过滤和来源归属

来源:examples/vector_databases/pinecone/Gen_QA.ipynb492-516

查询处理工作流

来源:examples/vector_databases/pinecone/Gen_QA.ipynb704-725 examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb561-577

特定向量数据库实现

Pinecone 集成

Pinecone RAG 实现中使用的关键函数和模式

  • 索引创建:pinecone.create_index(index_name, dimension=1536, metric='cosine')
  • 文档上传:index.upsert(vectors=to_upsert)
  • 相似性搜索:index.query(xq, top_k=2, include_metadata=True)

来源:examples/vector_databases/pinecone/Gen_QA.ipynb586-608 examples/vector_databases/pinecone/GPT4_Retrieval_Augmentation.ipynb192-194

Elasticsearch 集成

  • 索引映射:dense_vector 字段类型,带 dims: 1536, similarity: cosine
  • 批量索引:helpers.bulk(client, actions)
  • 向量搜索:VectorizedQuery(vector=query_embedding, k_nearest_neighbors=3)

来源:examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb171-194 examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb565-577

Azure AI 搜索集成

  • 索引 schema:SearchField,带 vector_search_dimensions=1536
  • 文档上传:SearchIndexingBufferedSender.upload_documents()
  • 混合搜索:结合向量和关键词搜索与语义重排序

来源:examples/vector_databases/azuresearch/Getting_started_with_azure_ai_search_and_openai.ipynb369-387 examples/vector_databases/azuresearch/Getting_started_with_azure_ai_search_and_openai.ipynb614-632

高级 RAG 技术

Azure AI 搜索展示了结合向量相似性和关键词匹配的混合搜索

来源:examples/vector_databases/azuresearch/Getting_started_with_azure_ai_search_and_openai.ipynb614-632

语义重排序

通过语义理解增强相关性

  • 配置:SemanticConfiguration,带 prioritized_fields
  • 查询类型:QueryType.SEMANTIC
  • 特性:QueryCaptionType.EXTRACTIVEQueryAnswerType.EXTRACTIVE

来源:examples/vector_databases/azuresearch/Getting_started_with_azure_ai_search_and_openai.ipynb673-713

错误处理与优化

速率限制策略

该 Cookbook 展示了针对 API 调用的健壮错误处理

来源:examples/vector_databases/pinecone/Gen_QA.ipynb674-682

批量处理优化

  • 嵌入批次:在单个 API 调用中处理多个文本
  • 向量数据库批次:使用批量操作进行索引
  • 错误恢复:实现带指数退避的重试逻辑

来源:examples/vector_databases/pinecone/Gen_QA.ipynb664-696 examples/vector_databases/elasticsearch/elasticsearch-retrieval-augmented-generation.ipynb246-262

常见用例

问答系统

RAG 通过将响应基于检索到的文档,实现事实性问答

组件实现示例
知识库维基百科文章、文档jamescalam/youtube-transcriptions 数据集
查询处理基于嵌入的相似性搜索“句子转换器使用哪种训练方法?”
答案生成上下文增强提示多负样本排名 (MNR) 损失

来源:examples/vector_databases/pinecone/Gen_QA.ipynb193-225

文档搜索与摘要

  • 对大型文档集合进行语义搜索
  • 对检索到的段落进行上下文感知摘要
  • 来源归属和引用支持

来源:examples/vector_databases/elasticsearch/elasticsearch-semantic-search.ipynb24-28

知识库集成

RAG 系统可以与现有知识库集成

  • 企业文档库
  • API 文档
  • 技术手册和指南

来源:examples/vector_databases/README.md5-7

检索增强生成 (RAG)