要在 LlamaIndex 中微调检索过程,您可以调整影响数据索引、检索和排序方式的几个组件。首先,自定义文档拆分和存储的方式。 LlamaIndex 使用“节点”(文本块)来表示数据,修改块大小、重叠或拆分方法等参数会直接影响检索质量。例如,增加块大小可能会捕获更多上下文,但会降低精度,而较小的块可能会遗漏更广泛的主题。您还可以尝试高级节点解析器,例如 SentenceWindowNodeParser
,它将句子与周围的上下文分组。例如,将文本分成三个句子的窗口,并设置一个句子的重叠,可以确保保留关键思想,而不会孤立它们。调整这些设置有助于根据您的数据类型(例如,技术文档与叙述性文本)平衡粒度和上下文。
接下来,通过调整查询参数或切换检索策略来优化检索器本身。 LlamaIndex 支持多种检索器,例如用于语义搜索的 VectorIndexRetriever
或用于精确关键字匹配的 KeywordTableRetriever
。如果使用基于向量的方法,请调整 similarity_top_k
参数以控制要获取的结果数量。例如,设置 similarity_top_k=10
会检索更多候选结果,然后可以对这些结果重新排序。混合方法,例如将向量和关键字检索器与 QueryEngineTool
结合使用,通常会产生更好的结果。您还可以实现 RecursiveRetriever
来遍历分层数据(例如,文档中的嵌套部分)。此外,调整嵌入模型——从像 text-embedding-ada-002
这样的通用模型切换到特定领域的模型——可以提高专业数据的相关性。
最后,优化检索后步骤以提高结果质量。使用像 Cohere 或 Hugging Face 的 CrossEncoder
模型这样的重排序器,根据检索到的节点与查询的实际相关性对它们进行重新评分。例如,通过重排序器传递前 20 个节点可以筛选出最准确的 5 个结果。元数据过滤是另一个杠杆:使用 MetadataFilters
将检索限制为标记有特定属性(例如,日期范围或文档部分)的节点。如果您的数据包含结构化字段,请定义一个包含 SQLDatabase
集成的 VectorStoreIndex
,以混合语义查询和结构化查询。测试这些设置的不同组合——通过命中率或精确度等指标——至关重要。例如,运行 A/B 测试,比较基线检索器与带有重排序的混合设置,以量化改进。