news 2026/5/13 1:26:30

RAG教程-实战篇-第五节 知识检索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG教程-实战篇-第五节 知识检索

点赞 * 关注 * 不迷路

如果结果不如你所愿,就在尘埃落定前奋力一搏。——《夏目友人帐》
有些事不是看到了希望才去坚持,而是因为坚持才会看到希望。——《十宗罪》
维持现状意味着空耗你的努力和生命。——纪伯伦

RAG 技术手册 * 第二章 RAG实战
第五节 * 知识检索

CSDN:会员活动入口,

一. 本节目标

上一小节,我们准备好了我们的知识库,这一章节我们来探讨如何根据用户的输入来进行知识检索,以及在检索中我们遇到的问题及处理办法。

再开始之间我们先对上一节中的内容做个补充。(这几天状态不佳,文档的口语化和质量有点水了。理解理解,说清楚即可… )

补充: 上一节中分块大小

模型上下文窗口文本类型建议分块大小(中文字)重叠窗口(中文字)修正/补充说明
4k Token短文档、简洁说明 (如产品手册、FAQ)300 - 500 字50 - 100 字数值合理。 4k Token 约等于 600-800 中文字(取决于编码),此分块大小能确保单个窗口内包含 5-10 个切片,适合精准问答。
8k Token中等长度文档 (如论文、研报)500 - 800 字100 - 150 字数值合理。 稍大的块有助于保持论文的逻辑连贯性,重叠增加是为了防止跨段落的语义丢失。
16k+ Token长文档、复杂语境 (如书籍、万字财报)800 - 1500 字150 - 250 字建议调大。 原数据 1200 字上限略显保守。大窗口模型(如 128k)完全有能力处理更大的上下文,增大块尺寸有助于模型理解长距离依赖关系(如小说情节、长逻辑链条)。

🧐 深度检验与补充说明

为了确保数据的严谨性,原数据中的换算关系可以按照以下技术层面的校准:

1. 关于 Token 与中文字的换算
  • 原数据假设:4k Token ≈ 3000 字。
  • 实际情况:
    • 在主流模型(如 GPT-4, Claude 3, Qwen-72B)中,1 个中文字通常占用1.5 到 2 个 Token
    • 因此,4k Token 实际上只能容纳约 2000 - 2600 个中文字,而不是 3000 字。
2. 关于“重叠窗口”的重要性
  • 补充:重叠不仅仅是为了防止切断句子,更是为了**“语义补全”**。

  • 在向量检索中,如果切分点恰好在一个关键概念中间,向量表示会失真。

  • 建议:重叠部分通常设置为分块大小的

    10% - 20%

    是行业最佳实践。

    • 300字块 → 50字重叠 (~16%) ✅
    • 800字块 → 150字重叠 (~18%) ✅
    • 原数据符合这一黄金法则。
3. 关于“父子索引”策略
  • 对于

    16k+ Token

    的模型,现在的最佳实践不仅仅是增大分块,而是使用

    父子索引:

    • 检索小:检索 200 字的小块(为了向量匹配精准)。
    • 生成大:找到小块后,把该小块所属的 1000 字大块(父块)发给模型。
    • 这样既利用了向量匹配的精准度,又利用了大模型的长窗口理解能力。

二. 检索的本质

在开始实战之前,我们来思考一个内容,检索是什么?他和我们经常说的搜索有啥区别?

这里我整理了一些内容,大家可以参照了解下:

维度传统搜索 (如百度/Google)RAG 检索增强生成
核心目标找文档。帮你找到包含关键词的网页或文件列表。找答案。直接生成一段综合了多方信息的自然语言回答。
输出形式满足并带有关键字的内容一段完整的文本、代码或表格,通常附带引用来源。
理解能力侧重字面匹配(关键词)或简单的语义匹配。侧重意图理解。能把“怎么修电脑”和“电脑故障排除”联系起来。
处理数据数据本身。数据本身。
解决痛点信息过载,用户需要自己筛选和总结。大模型幻觉(胡说八道)和知识滞后(不知道最新新闻)。

(简而言之,通俗易懂 就是查找知识,

  • 一个是关键字(字面值)准确查找,如数据库中的姓名查询,一个是使用算法进行匹配查询

  • 一个字符编码值准确查询,一个使用数学公式进行相似度的查询。

  • 查询的结果都不是唯一且准确的。(当前搜索在全匹配的模式下是准确且唯一的)

    )。

RAG 的核心逻辑可以总结为四个字:“先搜,再答”, 从而避免“一本正经地胡说八道”。

三. RAG检索的流程

  1. 索引阶段 (Indexing)
    首先,我们将海量的非结构化数据(如 PDF、Word、Wiki、代码库)进行切片,并通过嵌入模型(Embedding Model)将其转化为计算机能理解的“数字指纹”(即向量),存储在向量数据库中。
  2. 检索阶段 (Retrieval)
    当你提问时,RAG 系统不会直接把问题丢给大模型,而是先做以下几步:
    • 向量化:把你的问题也变成“数字指纹”。
    • 相似度匹配:在向量数据库中,寻找与你的问题“指纹”最相似的文档片段。
    • 混合检索 (进阶):为了更精准,现在的 RAG 通常结合关键词检索(精确匹配术语,如错误代码)和语义检索(理解意图),这叫混合检索。
  3. 增强生成 (Augmented Generation)
    系统把你的问题+检索到的相关片段(作为上下文/参考资料)一起打包,发送给大模型。
    • Prompt 示例:“请根据以下参考资料 [资料A, 资料B…] 回答用户的问题:[你的问题]。”

四. 检索中的问题以及处理措施

4.1 从流程看问题

  • 用户的输入

    用户的输入处理是检索阶段最重要的一个环节,不用的用户有不同的语义理解和表述,有些人喜欢客客气气的问题,有些人喜欢跳跃式的问,不管是哪种,不确定性的输入和确定性的输出诉求就是个矛盾对立体。而在应用环节我们唯一能做的就是诱导用户的输入。

  • 相似度匹配

    RAG的数据匹配依赖于数据定理(算法),如:欧氏距离,余弦相似度等,它的深入应用场景往往是需要较高的知识场景,90%的企业应用大都不会过多关注这块。往往借助的是已经完成的工具使用即可。

  • 召回数据

    相似度匹配的知识向量,并不是唯一的,召回的条数越多,消耗的token和LLM回答的范畴就会变大,受约于成本。力求准确。混合检索和重排也是这块我们常常使用的方法。

  • LLM处理

    生成内容,离不开LLM的处理,LLM根据提供的内容进行回答,提示词的约束和模型文本总结理解能力是产出合理答案的关键,这一阶段能做的就是选择。

4.2 处理措施

  • 用户的输入趋于明确(这一阶段往往需要多余的token来保障输出)

    不明确的内容让其变为明确,使我们在这离解决问题的常用手段,可以从以下几个方面(rag 调优的时候还会再次探讨)

    • 通过LLM预先分析客户问题的意图(分析时候通过提示词约定范围,防止LLM幻觉”)。
    • 通过LLM对客户的问题生成多个相似语境的问题,再让这些问题和原问题一起进行相似度匹配(也就是多路召回技术)
    • 在无法确定用户输入或者有明确界定输入内容时候,预先通过用LLM和用户进行多伦问题,以产出合适的输入(也就是引导式补全技术)
  • 召回的处理

    在研发中并非召回的数据越多越好,召回的越多先不说检索的时间消耗,在后期处理和整理上也会面临问题,一般我们召回的数量控制在5左右。

    为保障更好的评估参数(准确度等)我们会采用混合检索的方式进行。(但并不绝对,要评估)

    对召回的数据还会使用重排模型进行重新排序,获取前5.

  • LLM处理

    长下文的内容过多,会使每一次的token消耗变多,文档中非匹配内容的去除也是必要的,保障语义的完整和成本的双重考就。

    进行文档压缩。

五. 检索的代码实现

这里我们使用langchain 进行研发,总体方式较为简单,核心代码如下:

retriever = CusParentDocumentRetriever(1, f"col_{1}") multi_query_retriever = MultiQueryRetriever.from_llm( retriever=retriever, # 这里将混合检索作为底层检索器 llm=chat, include_original=True # 包含原始问题 ) # --- 重排序 (Rerank) --- compressor = DashScopeRerank(model="qwen3-vl-rerank", top_n=5) # 压缩器 compressed_retriever = ContextualCompressionRetriever( base_compressor=compressor, base_retriever=multi_query_retriever ) # 检索 docs = compressed_retriever.invoke(query)

CusParentDocumentRetriever 代码在上一小节中,这里不再说明。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 1:23:14

DeepSeek总结的pg_clickhouse v0.3.0的新特性

来源:https://justatheory.com/2026/05/pg_clickhouse-0.3.0/ pg_clickhouse 的新特性 日期: 2026年5月11日 关于 pg_clickhouse 项目的新闻汇总。 新特性 首先,几周前 ClickHouse 博客发表了《pg_clickhouse 的新特性》一文,其中我介绍了该扩…

作者头像 李华
网站建设 2026/5/13 1:22:35

2026届学术党必备的降AI率平台推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 随着人工智能技术持续发展,AI论文查重系统已在学术领域广泛应用,此类…

作者头像 李华
网站建设 2026/5/13 1:21:31

AMD Ryzen调试神器:SMU Debug Tool终极指南,轻松掌控CPU性能

AMD Ryzen调试神器:SMU Debug Tool终极指南,轻松掌控CPU性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目…

作者头像 李华
网站建设 2026/5/13 1:20:07

安捷伦Agilent 8921A / HP8921A无线电综合测试仪

Agilent 8921A通信测试仪以5%的功率测量精度提升和低于7Hz的残余FM指标,成为蜂窝基站测试的高效解决方案。搭载11807B软件并支持持续升级,确保客户始终拥有技术支持,轻松完成AMPS测试及硬件升级需求。一.简单介绍:品 牌: Agilent/HP产品型号:…

作者头像 李华
网站建设 2026/5/13 1:20:06

教育科技公司利用Taotoken为不同课程模块匹配差异化AI辅导模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 教育科技公司利用Taotoken为不同课程模块匹配差异化AI辅导模型 应用场景类,设想一个教育科技公司需要为编程、数学、语…

作者头像 李华
网站建设 2026/5/13 1:18:05

磁性元器件选型实战:五大隐形陷阱与硬核避坑指南

磁性元器件(电感、变压器、磁珠、共模扼流圈)是电源与信号链中的“沉默基石”。选型失误不会立即烧毁,而是以效率下降、纹波超标、EMI变差、发热老化等形式慢慢折磨系统。本文从功率电感、反激变压器、共模扼流圈、贴片磁珠四大类出发&#x…

作者头像 李华