深圳夜场网站建设托管,稳稳在哪个网站做的消防直播,wordpress 标点排版,软件开发内容有哪些RAG#xff08;检索增强生成#xff09;是结合检索与生成式 AI 的技术框架。核心逻辑是先从外部知识库精准检索相关信息#xff0c;再将其作为上下文输入大模型生成回答。技术上依赖检索引擎#xff08;如向量数据库、BM25#xff09;、大语言模型#xff08;如 GPT、LLa…RAG检索增强生成是结合检索与生成式 AI 的技术框架。核心逻辑是先从外部知识库精准检索相关信息再将其作为上下文输入大模型生成回答。技术上依赖检索引擎如向量数据库、BM25、大语言模型如 GPT、LLaMA及数据预处理技术。通过检索增强解决大模型知识滞后、幻觉问题提升回答准确性。应用广泛涵盖智能客服、医疗问答、法律检索、教育辅导等场景能基于特定领域知识提供精准、可控的生成内容。
wow-RAG 是 Datawhale 推出的 RAG 技术实践项目网址datawhalechina/wow-rag: A simple and trans-platform rag framework and tutorial https://github.com/datawhalechina/wow-rag
在 RAG检索增强生成的文档管理中核心流程围绕 “文档预处理 - 存储 - 检索优化” 展开首先对原始文档进行加载与清洗去除冗余信息并统一格式接着通过分块策略将长文档拆解为语义连贯的小片段如按句子、段落或主题分割同时提取元数据如来源、时间随后为每个文档片段生成向量嵌入借助向量数据库将嵌入向量与文本片段关联存储构建可高效检索的索引最后结合动态更新机制支持新增文档的增量入库、过时文档的删除或修正并通过调整分块粒度、嵌入模型参数等方式持续优化检索准确性确保后续检索时能快速匹配到与用户 query 语义相关的文档片段。
查看index下的所有文档
print(index.docstore.docs)
print(index.docstore.docs) 的输出结果是一个 字典其中包含了通过 VectorStoreIndex.from_documents() 处理后存储在文档仓库docstore中的所有文档或节点Node数据。字典的 键是文档 / 节点的唯一 ID如 doc_id 或 node_id值是对应的文档 / 节点对象包含文本内容、元数据、哈希值等核心信息。
输出中每个 Document 或 Node 对象的关键信息包括 id_ 唯一标识符用于索引和检索 text 经过分块、清洗后的文档内容片段 metadata 文档的附加信息如来源、页码、时间等辅助检索过滤 hash 文档内容的哈希值用于检测重复或更新。
输出 {7601e3d4-10f2-4578-a740-3844ea5347ab: TextNode(id_7601e3d4-10f2-4578-a740-3844ea5347ab, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id2db319b2-7b0c-4c79-9be4-a3663819828c, node_type1, metadata{}, hashb12dc0fd22c420bcfefb4bf02ea246dc75127380caad1c4c69d8547ff3c6a6f5)}, metadata_template{key}: {value}, metadata_separator\n, text总的来说大模型可以分为常规大模型和推理型大模型我们大多数人口中的大模型一般都是指常规大模型本文重点介绍推理型大模型并尽可能将大模型的推理过程解释清楚最后再来说说deepseek为什么能成功用了哪些技术。\r\n\r\n什么是推理型大模型\r\n与常规 LLM 相比推理型 LLM 在回答问题前往往会先将问题拆解为更小的步骤通常称为推理步骤或思考过程也可以说是思维链COT。\r\n\r\n\r\n普通大模型直接给出答案没有给出求解过程。推理型大模型会将推理过程和答案一起输出。那么“思考过程”、“推理步骤”或“思维链”CoT, Chain-of-Thought究竟意味着什么\r\n\r\n\r\n我在之前的复旦大学文章中也提到过过思维链可以说某种程度上思维链直接决定了大模型的推理规划能力\r\n\r\n\r\n爱吃牛油果的璐璐细说复旦大学斯坦福大学智能代理AI-Agent二更\r\n280 赞同 · 16 评论文章\r\n\r\n爱吃牛油果的璐璐大模型中的思维链、思维树、思维图\r\n19 赞同 · 2 评论文章\r\n虽然我们可以探讨大模型是否真的能像人类那样思考但这些步骤将整个过程拆解为更小且结构化的推理。推理型大模型不仅学习“回答什么”更学习“如何回答”。\r\n\r\n\r\n为了理解推理型大模型的构建过程我们首先需要探讨一个范式转变。\r\n\r\nTrain-time compute 到 Test-time compute\r\n大模型从关注训练阶段的扩展训练时计算转向关注推理阶段测试时计算下面对两者分别进行介绍。\r\n\r\n训练时计算Train-time compute\r\n在 2024 年上半年之前为了提升大模型在预训练阶段的性能开发者通常会增加以下几个方面的规模\r\n\r\n• 模型参数parameters\r\n\r\n• 数据集tokens \r\n\r\n• 计算量FLOPs \r\n\r\n这三者合称为训练时计算train-time compute它体现了预训练数据作为“ AI 之燃料”的理念。基本上预训练投入越大最终得到的模型就会越出色。\r\n\r\n\r\n训练时计算不仅包括训练期间所需的计算量还涵盖了微调时所需的计算量。\r\n\r\n\r\n长期以来这些因素一直是提升 LLMs 性能的关键。研究人员通过各种 Scaling Law 探讨模型规模包括计算量、数据集大小和模型参数数量与模型性能之间的关系。这些定律属于所谓的“幂律”:某一变量例如计算量的增加会导致另一变量例如性能按比例发生变化。\r\n\r\n\r\n通常这些关系会在对数-对数坐标系下展示呈现直线以突出计算量的大幅增加。, mimetypetext/plain, start_char_idx0, end_char_idx1103, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 2db319b2-7b0c-4c79-9be4-a3663819828c: TextNode(id_2db319b2-7b0c-4c79-9be4-a3663819828c, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id7601e3d4-10f2-4578-a740-3844ea5347ab, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hash32cfc924bc4fef294e6a4d6fdf27b07c2fd8ac2341c4c203b59c3d9e2cb658c2), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id0d515c1f-5c01-45a0-8ecb-fbb2644dfcf8, node_type1, metadata{}, hashf4b3bad6187a5829f41b2fbabb5986885799dcfcc242ecbe51050f5e16a93cba)}, metadata_template{key}: {value}, metadata_separator\n, text长期以来这些因素一直是提升 LLMs 性能的关键。研究人员通过各种 Scaling Law 探讨模型规模包括计算量、数据集大小和模型参数数量与模型性能之间的关系。这些定律属于所谓的“幂律”:某一变量例如计算量的增加会导致另一变量例如性能按比例发生变化。\r\n\r\n\r\n通常这些关系会在对数-对数坐标系下展示呈现直线以突出计算量的大幅增加。最为知名的规模定律包括“Kaplan 定律”和“Chinchilla 定律”。这些定律能大致说明随着计算量、token 数量和参数数量的增加模型性能也会相应提升。\r\n\r\n\r\n图片来自《Scaling laws for neural language models》展示了模型性能如何随着不同计算指标如更长的训练时间、数据集规模和参数数量的增长而提高。这些定律也表明为了获得最佳性能必须同步扩展这三个因素。Kaplan 定律指出在固定计算量的前提下扩大模型规模通常比增加数据量更为有效而 Chinchilla 定律则认为模型规模和数据量同样重要。\r\n\r\n然而在 2024 年期间虽然计算量、数据集规模和模型参数数量持续增长但其带来的性能提升却呈现出边际递减的趋势。\r\n\r\n\r\n正如这些幂律所揭示的那样随着规模的不断扩大收益也会逐步递减。这就引发了一个问题“我们是否已经遇到了瓶颈”当然没有办法总比困难多嘛也自然而然的引出了测试时计算这一技术。\r\n\r\n测试时计算Test-time Compute\r\n增加训练时计算的高昂成本促使人们转而关注另一种方法——即测试时计算Test-time Compute。与不断增加预训练成本不同测试时计算允许模型在推理过程中“多思考一会儿”。\r\n\r\n\r\n非推理型模型通常只输出答案省略“推理”步骤如下图所示\r\n\r\n\r\n而推理型模型则会使用更多的 tokens通过系统性的思考过程推导出答案\r\n\r\n\r\n这一思路的核心在于要 LLM 花费更多计算资源来生成更好的答案。若所有增加的计算资源都用在生成最终答案上实际效率不高但若将新增的计算资源用在提前生成包含额外信息、关系以及新思路的 token 上则模型最终答案的质量会高得多。\r\n\r\n换句话说与其让模型直接把所有“算力”都投入到“一次性生成最终答案”不如在生成答案之前先产生一些中间思考或辅助信息tokens再在此基础上输出答案。这样会带来更高质量、更准确的结果尽管过程看似生成的文本更多、消耗的算力更大但实际却更高效因为减少了错误或浅层回答的概率从而节省了后续反复验证或修改的成本。, mimetypetext/plain, start_char_idx925, end_char_idx2027, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 0d515c1f-5c01-45a0-8ecb-fbb2644dfcf8: TextNode(id_0d515c1f-5c01-45a0-8ecb-fbb2644dfcf8, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id2db319b2-7b0c-4c79-9be4-a3663819828c, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hash091944a0268f207c7dfb2b74f64cd129e2b96a775f3ccad6a1f43d4c23a6c652), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id48567331-b35c-40f0-b63a-08a8cf96b423, node_type1, metadata{}, hash7d7ea952a1a237c6b591e674e262f89fb6f2ed6053142cfe6c26a6aa1e6ff0f0)}, metadata_template{key}: {value}, metadata_separator\n, text换句话说与其让模型直接把所有“算力”都投入到“一次性生成最终答案”不如在生成答案之前先产生一些中间思考或辅助信息tokens再在此基础上输出答案。这样会带来更高质量、更准确的结果尽管过程看似生成的文本更多、消耗的算力更大但实际却更高效因为减少了错误或浅层回答的概率从而节省了后续反复验证或修改的成本。\r\n\r\n\r\n规模定律scaling law\r\n与训练时计算相比测试时计算的规模定律相对较新。其中有两个有趣的研究方向将测试时计算的规模定律与训练时计算联系起来。\r\n\r\n首先OpenAI 的一篇帖子展示了测试时计算可能遵循与训练时计算相同的扩展趋势。\r\n\r\n\r\n图示中添加了红色虚线 OpenAI 认为这一新范式可能属于测试时计算。\r\n\r\nOpenAI 认为随着测试时计算领域的不断发展可能会出现一种向测试时计算扩展的范式转变。\r\n\r\n其次一篇题为《Scaling Scaling Laws with Board Games》的有趣论文探索了 AlphaZero并在不同的计算量下训练它以玩 Hex 游戏。\r\n\r\n\r\n图示展示了他们如何构造不同程度的训练时计算和测试时计算。其研究结果表明训练时计算与测试时计算之间存在紧密联系。每一条虚线都展示了达到特定 ELO 分数所需的最小计算量。\r\n\r\n\r\n随着测试时计算扩展得像训练时计算一样一个新的范式正逐步形成即利用更多测试时计算来构建“推理”模型。通过这种范式转变这些“推理”模型不再纯粹依赖训练时计算预训练和微调而是在训练和推理之间取得平衡。\r\n\r\n\r\n测试时计算甚至可以在思考时间上实现扩展如下图所示\r\n\r\n\r\n“长度扩展”也是我们在深入探讨 DeepSeek-R1 时将会探讨的一个内容。\r\n\r\n测试时计算的类别\r\n如 DeepSeek R-1 和 OpenAI-o1 这样推理模型的巨大成功表明测试时计算不仅仅是“多思考一会儿”这么简单。\r\n\r\n测试时计算可以涵盖多种技术包括思维链、修正答案、回溯、采样等等。\r\n\r\n大致而言这些技术可以分为两大类\r\n\r\n1. Search against Verifiers利用验证器进行搜索采样生成多个答案并挑选最佳答案\r\n\r\n2., mimetypetext/plain, start_char_idx1868, end_char_idx2813, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 48567331-b35c-40f0-b63a-08a8cf96b423: TextNode(id_48567331-b35c-40f0-b63a-08a8cf96b423, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id0d515c1f-5c01-45a0-8ecb-fbb2644dfcf8, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hash927234300d1f955466fb71fcf65e8c5323b5e7437bcf0a72aee2a5c1451d1d79), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id1003dfc4-ae7f-4909-83c8-5c049689613d, node_type1, metadata{}, hash9d26742453510558b469f5b02a13b1cb42a888fa4b63d79b8202d7cde06e6071)}, metadata_template{key}: {value}, metadata_separator\n, text测试时计算的类别\r\n如 DeepSeek R-1 和 OpenAI-o1 这样推理模型的巨大成功表明测试时计算不仅仅是“多思考一会儿”这么简单。\r\n\r\n测试时计算可以涵盖多种技术包括思维链、修正答案、回溯、采样等等。\r\n\r\n大致而言这些技术可以分为两大类\r\n\r\n1. Search against Verifiers利用验证器进行搜索采样生成多个答案并挑选最佳答案\r\n\r\n2. Modifying Proposal Distribution修改Proposal个人不太喜欢提议这个翻译总感觉较英文差点意思分布训练过的“思考”过程\r\n\r\n\r\n两种方法的侧重点不同利用验证器进行搜索侧重于输出而修改提议分布则侧重于输入。\r\n\r\n\r\n接下来将探讨两种类型的验证器\r\n\r\n• 结果奖励模型Outcome Reward Models, ORM\r\n\r\n• 过程奖励模型Process Reward Models, PRM\r\n\r\n结果奖励模型 ORM\r\nORM只对结果进行评判而不关心背后的过程\r\n\r\n\r\n相反过程奖励模型 PRM 不仅评判结果还会考量生成结果的过程即“推理”过程。\r\n\r\n过程奖励模型PRM\r\n\r\n为了使 PRM 的推理步骤更具体我们将推理展开看\r\n\r\n\r\n可以看到PRM 对步骤 2 打了一个最低分说明步骤 2 是一个坏的推理步骤。\r\n\r\n接下来探讨它们在各种验证技术中的应用。\r\n\r\nSearch against Verifiers\r\n测试时计算的首个主要方法是利用验证器进行搜索。这个过程通常包括两个步骤\r\n\r\n1. 生成多个推理过程及其对应的答案。\r\n\r\n2. 然后利用验证器即奖励模型对生成的输出进行评分。\r\n\r\n\r\n通常验证器也是一个经过微调的 LLM用于评判大模型的结果ORM或大模型的思考过程PRM。\r\n\r\n使用验证器的一个主要优势在于无需重新训练或微调用于回答问题的 LLM。\r\n\r\n多数投票Majority Voting\r\n最直接的方法其实是不使用任何奖励模型或验证器而是采用多数投票。\r\n\r\n具体做法是让模型生成多个答案然后选取出现次数最多的那个作为最终答案。\r\n\r\n\r\n这种方法也被称为 自洽性self-consistency以强调需要生成多个答案及其推理步骤。\r\n\r\nBest-of-N 样本\r\n第一种真正使用到验证器的方法被称为 Best-of-N 样本。它的核心思路是生成 N 个答案样本然后使用验证器一般是结果奖励模型ORM来对每个答案进行判断。\r\n\r\n1. 生成多个答案\r\n\r\n通常由一个大模型也经常被称为“Proposer”在较高或多种温度设定下生成多个答案样本。\r\n\r\n\r\n2., mimetypetext/plain, start_char_idx2618, end_char_idx3784, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 1003dfc4-ae7f-4909-83c8-5c049689613d: TextNode(id_1003dfc4-ae7f-4909-83c8-5c049689613d, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id48567331-b35c-40f0-b63a-08a8cf96b423, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashdab9d5a9804ccde77aae7da82fe19b02d117eb4aeb86375d560b931e44df9e57), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_idde3af69b-5b14-4e1c-82c2-573807e3c0ff, node_type1, metadata{}, hashaf4bf4bc0882b658cb247252603c38fceeb90b20596e3a1c04b7fa7a5e969381)}, metadata_template{key}: {value}, metadata_separator\n, text生成多个答案\r\n\r\n通常由一个大模型也经常被称为“Proposer”在较高或多种温度设定下生成多个答案样本。\r\n\r\n\r\n2. 评分并选取最佳答案\r\n\r\n将每个答案输入给结果奖励模型ORM为其打分并选出分数最高的那个答案。\r\n\r\n\r\n如果想评估的不只是答案还包括推理过程则可以使用 过程奖励模型PRM。它会判断每个推理步骤的质量并选取具有最高总权重的候选答案。\r\n\r\n\r\n基于这两类验证器我们还可以让奖励模型RM分别对每个答案候选进行加权然后选出综合得分最高的那一个这种方法被称为 加权 Best-of-N 样本Weighted Best-of-N samples。\r\n\r\n\r\n使用过程奖励模型的 Beam Search\r\n在生成答案和中间推理步骤时我们可以将上述过程进一步扩展到 Beam Search。\r\n\r\n在 Beam Search 中会对多个推理步骤进行采样并由过程奖励模型PRM进行打分类似于 Tree of Thought 的思路。在此过程中我们会追踪评分最高的若干条“beam”例如前三名。\r\n\r\n\r\n这种方法能让我们快速终止那些得分低、不太可能带来理想结果的推理路径从而将计算资源集中在更有用的推理路线。\r\n\r\n最终产生的答案结合之前的 Best-of-N 方法进行加权或筛选获得最高分答案。\r\n\r\n蒙特卡洛树搜索Monte Carlo Tree Search\r\n蒙特卡洛树搜索MCTS 是在搜索树中高效寻找最优路径的一种方法通常包括以下四个步骤\r\n\r\n1. Selection根据特定公式例如上置信界 UCB选择当前树中的某个叶子节点。\r\n\r\n2. Expand在该叶子节点处创建额外的子节点新的推理步骤。\r\n\r\n3. Rollouts对新生成的节点进行若干次随机扩展直到到达最终答案。\r\n\r\n4., mimetypetext/plain, start_char_idx3720, end_char_idx4522, metadata_seperator\n, text_template{metadata_str}\n\n{content}), de3af69b-5b14-4e1c-82c2-573807e3c0ff: TextNode(id_de3af69b-5b14-4e1c-82c2-573807e3c0ff, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id1003dfc4-ae7f-4909-83c8-5c049689613d, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashc1b0eed835d53ded34491c3a475ac26996c8c4fb06201b3ab91cd9297b50eee1), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id96c385d2-8703-4636-84de-21c9be129a97, node_type1, metadata{}, hash9b0cf263fb45fb1b28abf8f1be2330a2d5d028b39f87b59310995c7d9147772d)}, metadata_template{key}: {value}, metadata_separator\n, textSelection根据特定公式例如上置信界 UCB选择当前树中的某个叶子节点。\r\n\r\n2. Expand在该叶子节点处创建额外的子节点新的推理步骤。\r\n\r\n3. Rollouts对新生成的节点进行若干次随机扩展直到到达最终答案。\r\n\r\n4. Backprop将模拟中获得的分数或奖励向上更新到父节点。\r\n\r\n这四个步骤的目标是不断扩大最优推理路径的同时兼顾对其他潜在路径的探索即在“探索”与“利用”之间取得平衡。\r\n\r\n节点的选择和评分通常可参考下图所示的公式或方法来执行\r\n\r\n\r\n在选择要进一步探索的推理步骤时不一定总是选择当前看起来最佳的路径这样有助于避免过早收敛。\r\n\r\n具体实现中选中一个节点后可以对其进行扩展生成新的推理步骤再使用适当的温度采样来生成多个变体。\r\n\r\n\r\n随后我们会对某一分支进行多次模拟rollout直到生成完整的答案。\r\n\r\n这些 rollouts 可依据推理过程PRM、结果质量ORM或两者结合来进行评估并得到分数。\r\n\r\n最后将这些得分回溯更新到父节点然后继续进行新的选择selection周而复始持续改进搜索过程。\r\n\r\n\r\n修改提议分布 Modifying Proposal Distribution\r\n让大模型进行推理的第二大类方法称为“修改提议分布”。与利用验证器着重输出来搜索正确推理步骤不同这种方法会训练模型主动生成更优质的推理步骤着重输入。换句话说我们会对用于采样Completion/Thought/Tokens的分布进行修改。试想我们有一个问题以及一个用于从中采样的 tokens 的分布。常见的策略是选取得分最高的 token\r\n\r\n\r\n但注意在上方示意图中有些 tokens 被标记成红色——这些 tokens 会更倾向于带来推理过程\r\n\r\n\r\n尽管“贪婪”地选择得分最高的 token 并不一定错误但如果某些 token 指向了更详细的推理步骤往往可以得到更高质量的答案。\r\n\r\n当我们修改提议分布即 token 的概率分布时实质上就是对模型的 token 排序进行重新评估使得“推理” token 被选中的概率更大\r\n\r\n\r\n从概念上说修改提议分布的方法可以分成两类\r\n\r\n1. 通过 Prompt Engineering 来更新提示\r\n\r\n2. 训练模型更多地关注推理 token 或推理过程\r\n\r\nPrompting\r\n在 Prompt Engineering 中我们通过更新提示来改善输出同时也会引导模型显式或隐式地展示之前提到的“推理过程”。\r\n\r\n要通过 Prompt 来改变提议分布我们可以给模型提供示例即“上下文学习”从而诱导它生成更具推理倾向的回答\r\n\r\n\r\n如果不想提供完整示例也可以通过简单的一句话来指示模型例如“Let’s think step-by-step”从而让模型在回答之前先做推理拆解\r\n\r\n\r\n不过需要注意模型本身并不一定“真正学会”遵循这个过程。, mimetypetext/plain, start_char_idx4394, end_char_idx5686, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 96c385d2-8703-4636-84de-21c9be129a97: TextNode(id_96c385d2-8703-4636-84de-21c9be129a97, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_idde3af69b-5b14-4e1c-82c2-573807e3c0ff, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashe670fdda69b7638a9f3f998133b042fdf895d6fe3e0889ad25c559ac774c2183), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_idde04124e-49be-4503-ab1c-a0a61d78d97e, node_type1, metadata{}, hash7eeb3b0eecca43eea8d4540ae40f97de21c036d3060b749cdb7c305c9a55173e)}, metadata_template{key}: {value}, metadata_separator\n, text要通过 Prompt 来改变提议分布我们可以给模型提供示例即“上下文学习”从而诱导它生成更具推理倾向的回答\r\n\r\n\r\n如果不想提供完整示例也可以通过简单的一句话来指示模型例如“Let’s think step-by-step”从而让模型在回答之前先做推理拆解\r\n\r\n\r\n不过需要注意模型本身并不一定“真正学会”遵循这个过程。此外这种方法是静态、线性的缺少自我修正机制。一旦模型开始的推理过程出现错误它往往会沿着这个错误的思路继续下去而不进行修正。\r\n\r\nSTaRSelf-Taught Reasoner\r\n除了提示工程另一个思路是让模型通过“学习”来进行推理即让模型因生成相应的推理步骤而获得奖励。此类方法通常需要大量的推理数据和强化学习以在训练中鼓励某些行为。\r\n\r\n一个颇具争议的方法是 STaR即 Self-Taught Reasoner。STaR 会让 LLM 生成自身的推理数据并将这些推理作为微调的训练输入。\r\n\r\n模型先在步骤 1中生成推理步骤和答案。如果答案正确 (2a)则将该推理过程和最终答案一起加入到三元组数据集中 (3a)用于后续的监督微调 (5)。这个过程如下图所示\r\n\r\n\r\n如果模型给出的答案是错误的 (2b)则为模型提供一个“提示”正确答案 3b让它去推理为什么这个答案才是正确的 (4b)。模型最终的推理过程同样会被加入到相同的三元组数据集中用于监督微调 (5)。这个过程如下图所示\r\n\r\n\r\n在这一过程中以及许多其他修改提议分布的方法中我们都会显式地教模型去“遵循”我们示范的推理步骤。\r\n\r\n换句话说我们可以通过监督微调来决定模型“应该怎样”进行推理。\r\n\r\nSTaR 的完整流程相当有趣因为它会自动生成合成训练示例。正如我们会在后续讨论 DeepSeek R1 时看到的使用合成训练示例是将推理过程蒸馏给其他模型的一种绝佳方式。\r\n\r\nDeepSeek-R1\r\n在推理模型领域一项重大的发布是 DeepSeek-R1。这是一个开源模型与 OpenAI 的 o1 推理模型直接竞争并在业界产生了重大影响。\r\n\r\nDeepSeek 团队通过多种技术手段成功地将推理能力巧妙融入到其基础模型DeepSeek-V3-Base中。我在之前的文章中也介绍了DeepSeek的核心概念大家也可以根据需要进行查看\r\n\r\n爱吃牛油果的璐璐万字长文手把手教你认识学会 DeepSeek掌握核心概念\r\n\r\n值得注意的是在这一过程中并未使用任何验证器与使用监督微调来提炼推理能力相比DeepSeek 更加重视强化学习RL。, mimetypetext/plain, start_char_idx5514, end_char_idx6637, metadata_seperator\n, text_template{metadata_str}\n\n{content}), de04124e-49be-4503-ab1c-a0a61d78d97e: TextNode(id_de04124e-49be-4503-ab1c-a0a61d78d97e, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_id96c385d2-8703-4636-84de-21c9be129a97, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashc8d20d6e56694e9409ad23670d26acff62068326a36a6810d27ad98b99ff4c19), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_idac42e4d1-bce1-4a45-8cd5-6bb567effd10, node_type1, metadata{}, hash1ec237657830554c65eeacccd3237f068397158cf68ecfe91fa2d4171c73eec0)}, metadata_template{key}: {value}, metadata_separator\n, textDeepSeek 团队通过多种技术手段成功地将推理能力巧妙融入到其基础模型DeepSeek-V3-Base中。我在之前的文章中也介绍了DeepSeek的核心概念大家也可以根据需要进行查看\r\n\r\n爱吃牛油果的璐璐万字长文手把手教你认识学会 DeepSeek掌握核心概念\r\n\r\n值得注意的是在这一过程中并未使用任何验证器与使用监督微调来提炼推理能力相比DeepSeek 更加重视强化学习RL。\r\n\r\n接下来让我们深入探究他们是如何为模型训练出推理能力的。\r\n\r\nDeepSeek-R1 Zero 的推理机制\r\n在通往 DeepSeek-R1 的道路上有一个实验性模型作出了关键贡献名为 DeepSeek-R1 Zero。\r\n\r\n它基于 DeepSeek-V3-Base 而来但并没有采用针对大量推理数据的监督微调而是仅通过强化学习RL来激发模型的推理行为。\r\n\r\n为此他们设计了一个非常简单直观的提示Prompt类似于系统提示贯穿于整个Pipeline\r\n\r\n\r\n可以看到虽然提示中明确要求在 think 标签内写出推理过程但并未对推理过程的具体形式做任何规定。\r\n\r\n强化学习阶段\r\n在强化学习阶段DeepSeek基于规则设计了两类奖励\r\n\r\n1. 准确度奖励Accuracy rewards通过测试答案的正确性来给予奖励。\r\n\r\n2., mimetypetext/plain, start_char_idx6429, end_char_idx7032, metadata_seperator\n, text_template{metadata_str}\n\n{content}), ac42e4d1-bce1-4a45-8cd5-6bb567effd10: TextNode(id_ac42e4d1-bce1-4a45-8cd5-6bb567effd10, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_idde04124e-49be-4503-ab1c-a0a61d78d97e, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hash6b5b23b0c939ad5a06c77fae3b7e677d53c87384fa3a41bd275b5f7c618332bc), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_ida52e1285-b9f7-40aa-88b9-7849aa151697, node_type1, metadata{}, hashc332dac398e02d00ae38f2394e441b3bd87d98a479c9da51c34dcfafc63a067c)}, metadata_template{key}: {value}, metadata_separator\n, text为此他们设计了一个非常简单直观的提示Prompt类似于系统提示贯穿于整个Pipeline\r\n\r\n\r\n可以看到虽然提示中明确要求在 think 标签内写出推理过程但并未对推理过程的具体形式做任何规定。\r\n\r\n强化学习阶段\r\n在强化学习阶段DeepSeek基于规则设计了两类奖励\r\n\r\n1. 准确度奖励Accuracy rewards通过测试答案的正确性来给予奖励。\r\n\r\n2. 格式奖励Format rewards对使用 thinking 和 answer 标签的行为给予奖励。\r\n\r\n他们所使用的 RL 算法名为 Group Relative Policy Optimization (GRPO) 。接下来介绍GRPO的核心思路。\r\n\r\nGRPO\r\n对于那些导致答案正确的所有决策——无论是特定的 token 序列还是推理步骤——都会在训练中获得使其更有可能被采纳的权重调整。\r\n\r\n而对于那些导致答案错误的所有决策则会在训练中获得使其更不可能被采纳的权重调整。\r\n\r\n\r\n有意思的是该提示并没有给出 think 过程应当如何呈现的示例只是要求在 think 标签内进行思考无需更多细节。\r\n\r\n通过向模型提供与思维链Chain-of-Thought相关的间接奖励模型逐渐自主学会当推理过程更长、更复杂时答案更可能是正确的。\r\n\r\n\r\n这张图非常重要因为它进一步印证了从训练时计算到测试时计算的范式转变。当这些模型生成更长的思考序列时实际上就加大了测试时计算的投入。\r\n\r\n通过这样的训练流程研究人员发现模型能够自发地探索出最优的链式推理模式并展现出如自我反思、自我验证等高级推理能力。\r\n\r\n不过这种做法仍存在一个显著缺陷其输出的可读性不佳而且有时会混用多种语言。为了解决这个问题团队转而研究另一种思路也就是 DeepSeek-R1。\r\n\r\nDeepSeek-R1训练\r\nDeepSeek-R1 的训练大体可以概括为以下五个阶段\r\n\r\n1. 冷启动Cold Start\r\n\r\n2. 面向推理的强化学习Reasoning-oriented Reinforcement Learning\r\n\r\n3. 拒绝采样Rejection Sampling\r\n\r\n4. 监督微调Supervised Fine-Tuning\r\n\r\n5. 适用于所有场景的强化学习Reinforcement Learning for all Scenarios\r\n\r\n以下是各个阶段的具体流程\r\n\r\n1. 冷启动Cold Start\r\n在第一步中研究人员使用一个小型的高质量推理数据集约 5000 个tokens对 DeepSeek-V3-Base 进行微调。这样做是为了避免“冷启动”问题导致的可读性不佳。\r\n\r\n\r\n2. 面向推理的强化学习\r\n在第二步中得到的模型采用与 DeepSeek-V3-Zero 类似的强化学习过程进行训练。但在奖励机制中增加了一项新指标用来确保目标语言的输出保持一致性。\r\n\r\n\r\n3., mimetypetext/plain, start_char_idx6830, end_char_idx8136, metadata_seperator\n, text_template{metadata_str}\n\n{content}), a52e1285-b9f7-40aa-88b9-7849aa151697: TextNode(id_a52e1285-b9f7-40aa-88b9-7849aa151697, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_idac42e4d1-bce1-4a45-8cd5-6bb567effd10, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashacedf367f7b12872b70bd06f00d7e05b146ba7d45ad11a0a53cba7ccde089c68), NodeRelationship.NEXT: 3: RelatedNodeInfo(node_id9dea914a-b261-4ed6-bb75-4f29ae8c891e, node_type1, metadata{}, hash0279db96c3126ea4e3acfcb96b6aa084085ec69f420f85270dd2cfdeeeca592f)}, metadata_template{key}: {value}, metadata_separator\n, text冷启动Cold Start\r\n在第一步中研究人员使用一个小型的高质量推理数据集约 5000 个tokens对 DeepSeek-V3-Base 进行微调。这样做是为了避免“冷启动”问题导致的可读性不佳。\r\n\r\n\r\n2. 面向推理的强化学习\r\n在第二步中得到的模型采用与 DeepSeek-V3-Zero 类似的强化学习过程进行训练。但在奖励机制中增加了一项新指标用来确保目标语言的输出保持一致性。\r\n\r\n\r\n3. 拒绝采样Rejection Sampling\r\n在第三步研究人员利用上一步得到的模型合成推理数据用于后续的监督微调。通过基于规则的奖励策略rule-based rewards、生成式奖励模型Generative Reward Model生成了 600,000 份高质量的推理示例。 此外还生成了 200,000 份“非推理”示例这些示例来自 DeepSeek-V3 及其部分训练数据。\r\n\r\n\r\n4. 监督微调Supervised Fine-Tuning\r\n第四步将得到的总计 800,000 条示例数据用于对 DeepSeek-V3-Base 的监督微调。\r\n\r\n\r\n5. 适用于所有场景的强化学习\r\n第五步他们使用与 DeepSeek-R1-Zero 类似的方法对微调后得到的模型再次进行 RL 训练。但为了更好地对齐人类偏好Human Preferences在奖励信号中额外加入了“有益性”与“无害性”的考量。同时为了避免推理结果的可读性问题模型会被要求对推理过程进行适当的总结和精简。\r\n\r\n\r\n通过上述五个阶段DeepSeek-R1 最终得以成型。可以说DeepSeek-R1 是 DeepSeek-V3-Base 通过监督微调和强化学习得到的成果。其中大量工作都集中在确保生成出高质量的训练示例上。\r\n\r\n使用 DeepSeek-R1 进行推理“蒸馏”\r\nDeepSeek-R1 规模庞大拥有 6710 亿671B参数。这对于普通硬件来说运行成本极高。\r\n\r\n因此DeepSeek的研究人员还探索了如何将 DeepSeek-R1 的推理能力“蒸馏”到其他模型中例如可以在消费级硬件上运行的 Qwen-32B。\r\n\r\n具体做法是让 DeepSeek-R1 作为教师模型Teacher而体量较小的模型则作为学生模型Student。两者在面对相同的提示时需要分别生成 token 的概率分布学生模型会尝试在训练中逼近教师模型的分布\r\n\r\n\r\n1. 使用之前提到的 80 万高质量数据样本其中 60 万条推理示例 20 万条非推理示例进行训练。\r\n\r\n\r\n2., mimetypetext/plain, start_char_idx7923, end_char_idx9062, metadata_seperator\n, text_template{metadata_str}\n\n{content}), 9dea914a-b261-4ed6-bb75-4f29ae8c891e: TextNode(id_9dea914a-b261-4ed6-bb75-4f29ae8c891e, embeddingNone, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, excluded_embed_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], excluded_llm_metadata_keys[file_name, file_type, file_size, creation_date, last_modified_date, last_accessed_date], relationships{NodeRelationship.SOURCE: 1: RelatedNodeInfo(node_id175c70bd-eff9-4743-bd70-9174ee86dbed, node_type4, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hashfc891f08c5725428a6ea72c71b389cb0a718156509c4b2a4c42db880268b6595), NodeRelationship.PREVIOUS: 2: RelatedNodeInfo(node_ida52e1285-b9f7-40aa-88b9-7849aa151697, node_type1, metadata{file_path: docs\\大模型推理.txt, file_name: 大模型推理.txt, file_type: text/plain, file_size: 22722, creation_date: 2025-07-21, last_modified_date: 2025-07-21}, hash63a1927e6be275695f51cfcc2e469dfbe8aec9a18bdd496632b388b953b6ef75)}, metadata_template{key}: {value}, metadata_separator\n, text使用之前提到的 80 万高质量数据样本其中 60 万条推理示例 20 万条非推理示例进行训练。\r\n\r\n\r\n2. 学生模型通过不断对比自己的输出分布和教师模型的输出分布来学习 DeepSeek-R1 的推理方式。\r\n\r\n这样“蒸馏”出来的小模型性能依旧出色因为它不仅学到了 80 万条数据中的知识还学到了 DeepSeek-R1 如何作答的思路。\r\n\r\nDeepSeek不太成功的尝试\r\n还记得我们之前提到的 过程奖励模型PRMs 和 蒙特卡洛树搜索MCTS 吗DeepSeek 团队也曾试图用这些方法来培养模型的推理能力但并未取得理想成果。\r\n\r\n在 MCTS 中由于搜索空间极其庞大研究人员不得不大幅限制节点扩展。此外训练一个能够细化评估推理过程的奖励模型本身就是一项困难的任务。\r\n\r\n在结合 PRMs 的 Best-of-N 技术中他们遇到的主要问题是计算开销过高需要频繁地对奖励模型进行再训练以防止出现所谓的 “reward-hacking”对奖励函数的漏洞进行投机利用。\r\n\r\n这并不代表这些技术就完全不适用但至少说明了它们在实际应用中面临着一些挑战。\r\n\r\n结语\r\n以上就是关于推理型大模型的概念与 DeepSeek-R1 的有关介绍。希望这篇内容能帮助你更好地理解 “测试时计算扩展” 的潜力所在。也再次感谢为大模型探索道路上做出贡献和努力的研究者们像你们致敬, mimetypetext/plain, start_char_idx9003, end_char_idx9614, metadata_seperator\n, text_template{metadata_str}\n\n{content})} 文档来源与元数据整合所有节点均关联自文档docs\大模型推理.txt元数据中清晰记录了文件路径、名称、类型text/plain、大小22722 字节及创建 / 修改日期2025-07-21确保检索时可追溯内容来源。 语义分块策略落地原始文档被拆分为 14 个TextNode每个节点文本长度适中约 500-1000 字符围绕 “推理型大模型定义”“训练时 vs 测试时计算”“DeepSeek-R1 训练流程” 等子主题拆分保留了段落级语义连贯性避免内容割裂。 节点关系网络构建通过relationships字段建立了完整的上下文关联每个节点包含SOURCE指向原始文档根节点、PREVIOUS和NEXT指向前后相邻节点的引用关系形成链式结构确保检索时能还原文本逻辑流。 嵌入与过滤配置节点明确标注了excluded_embed_metadata_keys和excluded_llm_metadata_keys排除文件类型、大小等非核心元数据对嵌入生成和 LLM 调用的干扰聚焦文本内容本身的语义表征。 内容完整性验证所有分块文本覆盖了原文核心内容从推理型大模型定义、测试时计算范式到 DeepSeek-R1 的五阶段训练流程、推理蒸馏技术等均有体现未出现关键信息丢失为后续检索提供了完整的数据基础。
查看index下所有node的ID
print(index.index_struct.nodes_dict)
输出展示了一个向量索引结构中的 节点 ID 注册表nodes_dict它是构建高效检索系统的核心组件。
输出是一个字典键和值均为节点 ID如 7601e3d4-10f2-4578-a740-3844ea5347ab。这种设计看似冗余但实际上实现了 节点 ID 的唯一性校验和快速查找
唯一性每个 ID 在字典中只能出现一次防止索引冲突。O (1) 复杂度通过哈希表直接定位 ID无需遍历整个索引。
docstore.docs存储实际的文档内容文本、元数据等。nodes_dict作为索引层仅维护 ID 映射不存储内容。
nodes_dict 支持以下核心操作 向量相似度检索 当用户查询时系统首先计算查询向量与索引中节点向量的相似度返回最相似的节点 ID 列表。 通过 nodes_dict 快速验证 ID 有效性再从 docstore 获取完整内容。 文档链导航 由于节点间通过 relationships 建立了链式关系如 PREVIOUS、NEXT可基于 nodes_dict 快速跳转到上下文节点实现连贯的知识检索。 增量更新 新增文档时生成新 ID 并添加到 nodes_dict同时将内容存入 docstore无需重新处理已有索引。 查看index下面所有有ref文档的信息
print(index.ref_doc_info) 输出展示了向量索引系统中的文档引用信息ref_doc_info它建立了原始文档与索引节点之间的映射关系。具体来看这里有一个名为 175c70bd-eff9-4743-bd70-9174ee86dbed 的文档引用对应着一个包含 11 个节点的知识条目。这些节点 ID如 7601e3d4-10f2-4578-a740-3844ea5347ab此前在 nodes_dict 中出现过表明它们已被索引。该文档的元数据显示它源自 docs\大模型推理.txt 文件创建于 2025 年 7 月 21 日大小为 22,722 字节。这种设计实现了文档级的管理 —— 系统不仅能追踪单个节点还能将它们关联回原始文档支持完整上下文的重建。例如当检索到某个相关节点时系统可通过 ref_doc_info 定位到整个文档的元数据甚至获取同一文档中的其他相关节点为用户提供更全面的信息。这种结构在处理长文档时尤为重要因为长文档通常会被分割成多个节点以提高检索精度但用户可能需要访问完整的上下文。
参考文章
https://github.com/datawhalechina/wow-raghttps://github.com/datawhalechina/wow-rag