首页 > 数据库 > 数据库开发技术 > 一文带你全面了解 RAG 核心组件
检索增强生成 (RAG) 流程正在彻底改变我们与大型语言模型 (LLM) 的交互方式。RAG 不再仅仅依赖这些模型中预先训练的知识,而是让 LLM 能够实时访问和利用外部知识源,从而产生更准确、更相关、更有根据的响应。然而,构建有效的 RAG 系统并不是一个即插即用的操作;它是一个经历复杂选择的过程。
1. 数据加载器检索增强生成 (RAG) 是一种创新方法,它将检索系统的优势与生成模型相结合,允许根据外部知识生成与上下文相关的响应。构建有效的 RAG 流水线涉及多个组件,每个组件都有自己的一组选项、优点和缺点。这篇文章解开了 RAG 流水线的核心组件,探索了它们的选项,并讨论了超参数的关键作用。
数据加载器负责将来自各种来源的数据提取到 RAG 流水线中。以下是一些常见的选项:
DirectoryLoader:从指定目录加载文档。
PyPDFLoader:专门用于从 PDF 文件中提取文本。
WebBaseLoader:直接从网页获取内容。
CSVLoader:从 CSV 文件加载数据。
文本分割器将大型文档分解为易于管理的块,以便于处理。选项包括:
RecursiveCharacterTextSplitter:根据字符限制拆分文本,同时保持逻辑边界。
HTMLHeaderTextSplitter/HTMLSectionSplitter:根据标题或部分分割 HTML 文档。
CharacterTextSplitter:将文本分成指定字符长度的块。
TokenTextSplitter:根据标记计数拆分文本,对 NLP 任务很有用。
SpacyTextSplitter:利用 spaCy 的 NLP 功能智能地分割文本。
SentenceTransformers:利用不同的 NLP 库根据句子或特定语言的规则进行拆分的各种方法。
NLTKTextSplitter
KonlpyTextSplitter:
分块是指将文本分成更小的片段。主要方法包括:
固定大小块:将文本分割成预定的长度。
基于句子和基于段落的方法:使用自然语言边界进行分块。
语义分块:根据含义而不是大小对文本进行分段。
滑动窗口方法:创建重叠块以保留跨段的上下文。
混合方法:结合多种方法以获得最佳结果。
关键超参数:
嵌入将文本转换为密集的矢量表示。选项包括:
词嵌入(例如 Word2Vec):提供传统的词级嵌入。
句子嵌入(例如 BERT):捕获句子中单词之间的上下文关系。
图嵌入:
图像嵌入:
具体嵌入模型包括:
关键超参数:
矢量数据库存储嵌入以实现高效检索。常见的选择包括:
DocArrayInMemorySearch:内存向量搜索。
Pinecone:管理矢量数据库。
FAISS(Facebook AI 相似性搜索):Facebook AI 相似性搜索。
Cassandra:分布式 NoSQL 数据库。
Chroma:LLM 应用的矢量数据库。
Weaviate:开源矢量搜索引擎。
Milvus:开源矢量数据库。
pgvector:用于向量搜索的 PostgreSQL 扩展。
Qdrant:向量相似性搜索引擎。
Astra DB:托管矢量数据库。
Elasticsearch:搜索和分析引擎。
SingleStore:用于交易和分析的统一数据库。
关键超参数:
进行查询时,系统会采用矢量搜索算法来查找相关信息。选项包括:
近似最近邻 (ANN) :在高维空间中有效地查找相似的向量。
HNSW和其他方法(如 IVF-PQ 或局部敏感散列 (LSH))也因其速度和准确性的平衡而成为流行的选择。
IVF-PQ 或局部敏感哈希 (LSH) :
检索器根据查询嵌入识别相关文档或段落。检索器接收用户查询,并利用该查询从向量数据库中获取相关信息。选项包括:
MultiQueryRetriever:使用多个查询进行检索。
SemanticRetrieve:根据语义相似性进行检索。
ContextualCompressionRetriever:压缩上下文以实现有效检索。
LLMChainExtractor:使用 LLM 链进行检索。
EnsembleRetriever:组合多个检索器。
BM25Retriever:传统检索方法。
MultiVectorRetriever:使用多个向量进行检索。
ParentDocumentRetriever:根据父文档进行检索。
SelfQueryRetriever:使用自查询进行检索。
TimeWeightedVectorStoreRetriever:根据时间加权向量进行检索。
为了确定检索到的项目之间的相关性,可以采用几种相似度度量:
点积:通过向量乘法计算原始相似度。
余弦相似度:确定向量之间的角度差异。
欧几里得距离:测量向量之间的直线空间分离。
曼哈顿距离:计算向量分量之间的绝对差之和。
关键超参数:
检索增强生成 (RAG) 将检索系统和生成模型的优势结合起来,以生成与上下文相关的输出。为了优化 RAG 流水线的性能,仔细调整超参数至关重要。本博客探讨了超参数调整的最佳实践,涵盖了 RAG 流水线的各个组件,包括模型选择、嵌入策略、检索机制等。
超参数是影响机器学习模型训练和性能的配置变量。在 RAG 流水线中,超参数可以影响各个阶段,包括数据提取、检索和生成。需要考虑的关键超参数包括:
选择正确的检索和生成模型至关重要。以下是一些注意事项:
有几种有效调整超参数的策略:
网格搜索:系统地探索一组预定义的超参数。
随机搜索:从指定分布中随机抽样超参数。
贝叶斯优化:使用概率模型根据过去的评估找到最佳超参数。
自动超参数调整工具:Ray Tune或等工具Optuna可以通过利用高级算法智能优化超参数,从而简化调整过程
RAG 流水线的每个组件都有特定的超参数,可以进行调整以提高性能:
数据加载和分块:
尝试不同的块大小和重叠设置,以找到上下文保留和处理效率之间的最佳平衡
嵌入模型:
根据维度和语义保留选择嵌入模型。微调嵌入也可以显著提高性能
检索参数:
调整与查询转换和高级检索策略相关的参数,以增强检索到的文档的相关性
实施更改后,持续监控 RAG 流水线的性能至关重要。使用精度、召回率、F1 分数或用户满意度分数等指标来评估系统在不同超参数设置下的表现。



构建有效的 RAG 流水线需要仔细考虑各种组件及其配置。从数据加载器到嵌入模型,每个选择都会影响系统的整体性能和准确性。通过了解这些组件及其权衡,开发人员可以创建强大的系统,利用检索功能和生成模型来提供针对用户查询量身定制的精确、上下文感知的响应。在设计 RAG 流水线时,请记住,持续评估和优化对于在实际应用中实现最佳结果至关重要。
了解权衡和调整超参数是构建满足特定要求并提供卓越性能的 RAG 系统的关键。这篇文章只是触及了表面。请记住,实验、迭代和密切监控对于在这个充满活力的领域取得成功至关重要。随着技术的成熟,令人兴奋的是看到下一种新的 RAG 技术是什么。
原文作者:ChallengeHub;如有侵权,请联系管理员删除。