<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>项目文档 on Saiga</title>
    <link>http://localhost:1313/tags/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/</link>
    <description>Recent content in 项目文档 on Saiga</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <managingEditor>wuwenzen@outlook.com (wuwj)</managingEditor>
    <webMaster>wuwenzen@outlook.com (wuwj)</webMaster>
    <lastBuildDate>Sun, 10 Sep 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://localhost:1313/tags/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>用 RAG 做项目文档问答：从零搭一个 Demo</title>
      <link>http://localhost:1313/posts/2023-09-10-rag-for-project-docs/</link>
      <pubDate>Sun, 10 Sep 2023 00:00:00 +0000</pubDate><author>wuwenzen@outlook.com (wuwj)</author>
      <guid>http://localhost:1313/posts/2023-09-10-rag-for-project-docs/</guid>
      <description>&lt;p&gt;之前写过一篇「文档问答助手」的早期尝试，这次想更系统地从 RAG 角度，把整个过程讲清楚。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;RAG（Retrieval-Augmented Generation）= 检索增强生成&lt;br&gt;&#xA;简单说就是：先从你自己的文档里检索相关内容，再让大模型基于这些内容生成答案。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这篇文章以「项目文档问答」为例，从零搭一个小 Demo。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-目标让大模型读得懂我们的项目文档&#34;&gt;1. 目标：让大模型「读得懂」我们的项目文档&lt;/h2&gt;&#xA;&lt;p&gt;设定目标：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;知识来源：代码仓库中的 README、设计文档、接口说明等；&lt;/li&gt;&#xA;&lt;li&gt;使用方式：在一个 Web 界面里提问，例如：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;「私募投资人小程序支持哪些登陆方式？」&lt;/li&gt;&#xA;&lt;li&gt;「电子合同模块的签署流程有哪些关键步骤？」&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;期望回答：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基本准确；&lt;/li&gt;&#xA;&lt;li&gt;回答中能指出「来自哪份文档」。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;约束条件：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不追求「端到端生产可用」，先搭一个可演示、可验证的 Demo；&lt;/li&gt;&#xA;&lt;li&gt;优先用云端 Embedding + 向量库，而不是自己训模型。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-文档准备与切分&#34;&gt;2. 文档准备与切分&lt;/h2&gt;&#xA;&lt;h3 id=&#34;21-文档来源&#34;&gt;2.1 文档来源&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Git 仓库中的 Markdown：&lt;code&gt;docs/&lt;/code&gt; 目录、各项目 README；&lt;/li&gt;&#xA;&lt;li&gt;内部 Wiki 导出的 HTML/Markdown；&lt;/li&gt;&#xA;&lt;li&gt;部分 API 文档（Swagger/OpenAPI 转文本）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;统一先转成 Markdown/纯文本，方便处理。&lt;/p&gt;&#xA;&lt;h3 id=&#34;22-切分策略&#34;&gt;2.2 切分策略&lt;/h3&gt;&#xA;&lt;p&gt;RAG 很关键的一步是「chunking」，即把长文档切成小段。&lt;br&gt;&#xA;我们采用的是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;按标题结构 + 字数混合切分&lt;/strong&gt;；&lt;/li&gt;&#xA;&lt;li&gt;每段控制在 300–600 字；&lt;/li&gt;&#xA;&lt;li&gt;保留上级标题用于提供上下文。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;示例结构：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;docId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fund-investor-miniapp&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;docTitle&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;信e募投资人小程序技术方案&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;sectionPath&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2. 技术架构&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2.1 前端技术栈&amp;#34;&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;前端采用 Vue3 + uni-app...&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;经验：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
