查询增强常用的方法有4种
查询增强常用的方法有4种,分别是创建假设问题、假设文档嵌入、子查询和回溯提示。
| 名称 | 说明 | 缺点 | 举例 |
| 创建假设问题 |
利用大语言模型(LLM)主动生成与用户原始查询语义相关但表述多样的“假设性问题”,将这些新问题与原查询合并后用于检索,从而提升召回率与答案质量。 这种方法通过直接参与查询到查询的搜索,绕过了向量搜索过程中的跨域不对称问题,减轻了向量搜索的负担。 |
在生成假设问题时引入了额外的开销和不确定性。 |
用户问:“怎么减压” |
| 假设文档嵌入(HyDE) |
利用 LLM 制作一个"假设文档"或虚假答案,以回应没有上下文信息的用户查询。然后,这个假答案会被转换成向量嵌入,并用于查询向量数据库中最相关的文档块。随后,向量数据库会检索出 Top-K 最相关的文档块,并将它们传送给 LLM 和原始用户查询,从而生成最终答案。 这种方法在解决向量搜索中的跨域不对称问题方面与假设问题技术类似。 |
增加了计算成本和生成虚假答案的不确定性。 |
用户问题:“量子计算在药物研发中有哪些应用?” |
| 子查询 | 当用户查询过于复杂时,可以使用 LLM 将其分解为更简单的子查询,然后再将其传递给向量数据库和 LLM。 | 增加了计算成本 |
用户会问"Milvus 和 Zilliz Cloud 在功能上有什么不同?"这个问题相当复杂,在知识库中可能没有直接的答案。为了解决这个问题,可以将其拆分成两个更简单的子查询: |
| 回溯提示 | 使用 LLM 将复杂的用户查询抽象为"回溯问题"**。然后,向量数据库利用这些回溯问题来检索最相关的文档块。最后,LLM 根据这些检索到的文档块生成更准确的答案。 |
原始用户查询:"我有一个包含 100 亿条记录的数据集,想把它存储到 Milvus 中进行查询。可以吗? 为了简化这个用户查询,可以使用 LLM 生成一个更直接的回溯问题:"Milvus 可以处理的数据集大小限制是多少?" |
文章内容来自于于对Milvus官方教程中高级RAG章节的部分总结,回溯提示这个看的似懂非懂的,先记录后续周边知识增加或许就明白了,todo

浙公网安备 33010602011771号