<?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/%E6%96%87%E6%A1%A3%E9%97%AE%E7%AD%94/</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, 30 Oct 2022 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://localhost:1313/tags/%E6%96%87%E6%A1%A3%E9%97%AE%E7%AD%94/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>用大模型做一个简单「文档问答助手」</title>
      <link>http://localhost:1313/posts/2022-10-30-ai-doc-assistant-v1/</link>
      <pubDate>Sun, 30 Oct 2022 00:00:00 +0000</pubDate><author>wuwenzen@outlook.com (wuwj)</author>
      <guid>http://localhost:1313/posts/2022-10-30-ai-doc-assistant-v1/</guid>
      <description>&lt;p&gt;2022 年开始，大模型 API 越来越好用，大家最直觉的一个想法就是：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;能不能把项目文档「喂给」模型，然后直接用自然语言问问题？&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这篇文章记录的是一个从 0 到 1 的小 Demo：&lt;strong&gt;用大模型 API + 向量检索，实现一个能回答「我们自己文档」问题的小助手。&lt;/strong&gt;&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;把部分项目文档（接口说明、架构设计、规范）导入系统；&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;li&gt;助手能基于文档给出相对准确的回答。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;约束：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不追求「完美答案」；&lt;/li&gt;&#xA;&lt;li&gt;优先做到：&lt;strong&gt;能指向正确文档，并给出简洁总结&lt;/strong&gt;。&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;p&gt;整体流程可以概括成：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;文档导入 &amp;amp; 切分；&lt;/li&gt;&#xA;&lt;li&gt;向量化（Embedding）并存入向量库；&lt;/li&gt;&#xA;&lt;li&gt;用户提问 → 向量检索相关片段；&lt;/li&gt;&#xA;&lt;li&gt;把相关片段 + 问题一起发给大模型 → 生成回答；&lt;/li&gt;&#xA;&lt;li&gt;前端展示答案 + 引用片段。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;用一张简图就是所谓的：&lt;strong&gt;RAG（检索增强生成）&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;3-文档预处理从-markdown-到小段文本&#34;&gt;3. 文档预处理：从 Markdown 到「小段文本」&lt;/h2&gt;&#xA;&lt;p&gt;我们选用的文档源主要是：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Git 仓库里的 Markdown（README、设计文档）；&lt;/li&gt;&#xA;&lt;li&gt;部分导出的接口文档（JSON/YAML 转文本）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;预处理步骤：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;把 Markdown 转成纯文本（保留标题层级）；&lt;/li&gt;&#xA;&lt;li&gt;按一定策略切分成「小段文本」，比如每段 300–500 字；&lt;/li&gt;&#xA;&lt;li&gt;每段附带元信息：文档名、段落标题、在文档中的位置。&lt;/li&gt;&#xA;&lt;/ol&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;title&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;技术栈与整体架构&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;section&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;index&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&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>
