使用 DeepSeek 自动生成文档

2025年4月23日 | 7 分钟阅读

引言

DeepSeek R1 是人工智能领域的一项重大进展。它以一种独特且至关重要的开源方式集成了强化学习和监督微调。

DeepSeek-R1-Zero 仅使用强化学习进行训练,而 DeepSeek-R1 则经过额外的训练阶段。凭借 370 亿激活参数和 6710 亿总参数,其架构可以管理高达 128,000 个 token 的上下文长度。开发过程的各个阶段都经过精心规划。

什么是 DeepSeek R1?

采取了一种有条不紊的方法来创建一个系统,该系统能够在通用问题解决和数学编程方面生成响应并培养复杂的推理能力。DeepSeek R1 的性能非常出色,可以与 OpenAI 的产品竞争。它获得了 90 分的评分。

先决条件:回顾 RAG 概念

基于 Qwen 和 Llama 等知名框架,该技术还被精简为从 1 到 2.5B 到 70B 参数的小型版本。这些修改保留了该技术的核心要素,同时提高了可用性。通过检索增强生成 (RAG),大型语言模型 (LLM) 取得了显著进步。与仅依赖其训练数据的传统 LLM 不同,RAG 将语言模型的能力与实时检索和外部信息参考相结合。通过这种方法,当前存储在外部数据库或文档中的目标数据成功地与模型的内在知识连接起来。

Generating Documentation Automatically using DeepSeek

RAG 架构中,生成器和检索器是两个主要部分。检索器必须在知识库中搜索,以根据用户的查询找到相关信息。此过程通常涉及将查询和存储的文档转换为向量嵌入,以实现超越简单关键字匹配的语义相似性搜索。生成器,通常是 LLM,在接收到初始查询和检索到的信息后,会生成详尽且与上下文相关的响应。

RAG 的主要好处之一是它能够提供更精确且可验证的答案。当 LLM 生成看似可信但实际上是虚构的信息时,称为幻觉,当 RAG 严格将模型输出建立在特定的可检索来源上时,幻觉就会减少。这在精度和责任至关重要的专业环境中特别有用,例如技术文档、客户服务或法律应用。

此外,RAG 系统更具适应性和可维护性,可以通过新数据进行更新,而无需重新训练底层语言模型。通常,必须协同工作几个技术组件来实现 RAG。最初,使用 BERT 或 Sentence Transformers 等模型处理文档并将其转换为嵌入。之后,这些嵌入被存储在 FAISS 或 Pinecone Weaviate 等向量数据库中,以便于访问。在查询经过相同的嵌入过程后,相似性搜索算法会选择最相关的文档。然后,LLM 利用这些文档生成一个包含原始查询及其答案的提示。这个有条不紊的过程确保了最终产品是相关的,并且来源于可信的来源,用户首先输入要抓取的文档的 URL。

应用程序概述

应用程序的两个主要界面部分是主聊天界面和文档管理侧边栏。用户可以通过侧边栏进行以下操作。要抓取文档,请输入URL

  • https://docs.firecrawl.dev
  • https://docs.langchain.com
  • https://docs.streamlit.io

为文档命名,以 -docs 结尾。设置最多可抓取的页面数量限制。检查并选择以前抓取的数据集。

  1. 当用户开始抓取时,该应用程序会使用 Firecrawl 智能地抓取文档网站,并将HTML内容转换为干净的 markdown 文件。
  2. 这些文件的本地位置在以文档命名的目录中(例如,A. A... A B. Firecrawl 文档。
  3. 在抓取过程中,该应用程序会向用户提供实时进度更新,并在完成后通知他们。
  4. 抓取文档后,使用 Nomic 嵌入模型将其转换为向量数据库。
  5. 这使得语义搜索成为可能,使助手能够响应用户查询来查找相关的文档部分。

在用户从侧边栏选择一组文档后,处理会自动开始。主聊天界面使与文档的交互变得简单。

应用程序使用 RAG(检索增强生成)来查找相关的文档部分。DeepSeek R1 使用检索到的内容来生成精确的上下文相关响应。每个响应都包含一个可展开的 View 推理部分,该部分说明了推理过程。

应用程序中使用的技术栈

该应用程序将根据需要自动重新处理向量,并且用户可以随时在不同的文档集之间切换。这种方法通过融合现代人工智能的力量和传统的文档搜索,创造了一种更智能、更具交互性的技术文档探索方式。与传统搜索方法不同,无论您是想解决特定问题还是学习新框架,助手都能帮助您更快地查找和理解相关文档。

Firecrawl:AI 驱动的文档抓取

成功的文档助手需要高效且可维护的工具,同时还要处理 Web 抓取、文本处理和自然语言理解等复杂任务。让我们看看支持我们应用程序的主要技术以及选择它们时进行的分析。

AI 驱动的 Firecrawl 用于文档抓取。

  • 处理各种文档布局不需要自定义代码。
  • 即使文档结构发生变化,也能保持可靠性。
  • 自动提取干净 markdown 内容。
  • 管理使用 JavaScript 的文档网站。
  • 自动创建包括 URL 和标题在内的元数据。

智能地遵循文档中的链接。Firecrawl 是一款 AI 驱动的 Web 抓取工具,是我们文档收集系统的基础。与其他依赖脆弱 HTML 选择器的抓取库不同,Firecrawl 使用自然语言理解来识别和提取内容。

DeepSeek R1 用于问答

我们通过 Ollama 使用 DeepSeek R1 14B 模型来完成回答文档问题的关键任务。在理解技术文档和提供准确答案方面,这款 AI 模型非常出色。通过本地运行,可降低延迟并提高隐私性。

  1. 技术内容培训。
  2. 它通过逻辑推理提供详尽的论证。
  3. 比依赖云计算的模型更经济。
  4. 与 LangChain 的 RAG 工作流配合良好。

ChromaDB 用于向量存储

我们使用 ChromaDB 作为我们的向量数据库,以高效地存储和查询文档嵌入。这个现代化的向量存储提供了以下功能。

  1. 轻量且易于安装。
  2. 长时间保存嵌入。
  3. 快速相似性搜索。
  4. ChromaDB 与 LangChain 的无缝集成。
  5. 不依赖外部源。

简化的用户界面

Web 界面使用 Python 数据应用程序框架 Streamlit 构建。我们选择 Streamlit 的原因如下。

  • 它能够快速创建聊天界面。
  • 提供集成的文件处理组件。
  • 有效管理异步操作。
  • 在会话期间跟踪对话。
  • 它只需要很少的前端代码。
  • 它简化了部署

LangChain 用于 RAG 编排

我们使用 LangChain 将各个组件协调成一个连贯的 RAG 系统。这种结构提供了

  1. LLM 和嵌入的标准接口。
  2. 文本分割和文档加载工具。
  3. 与向量存储的集成。
  4. 及时管理及其结构化的输出解析。

这个精心挑选的堆栈使系统完全本地化和自包含,同时提供了强大的基础。现代基础设施(ChromaDB、LangChain 和 Ollama)结合 AI 驱动的工具(Firecrawl 和 DeepSeek)打造了一个可靠且高效的文档助手,能够处理各种技术文档。

DeepSeek 的问题和限制

DeepSeek 是自动创建文档的有力工具,但它也有缺点。例如,当它无法理解高度专业化的领域知识时,它会生成不准确的信息。它还可能生成冗长或重复的内容,需要手动编辑以确保准确性和清晰度。潜在后果和防御策略。

DeepSeek 的一个主要缺点是它倾向于生成模糊或不精确的文档,并且难以理解复杂的技术概念。有两种方法可以减轻这种情况:仔细定义输入提示并在提交生成的内容之前对其进行审查。DeepSeek 还可能导致格式不一致的问题。要确保所有文档的一致性,可以通过将其与现有的结构化模板或格式指南集成来解决此问题。

常见错误和解决方案

通过使用当前训练数据交叉引用生成输出与现有文档,并改进AI提示以获得更高的准确性,可以帮助减少 DeepSeek 的常见错误,例如生成重复内容、过时信息或误传技术细节。如果 DeepSeek 无法提供相关的文档,通过增强指令的详细程度或查找不明确的输入可以帮助提高输出质量。

AI 驱动的未来文档发展

得益于自然语言处理的进步,DeepSeek 可能会在更少的人工干预下创建更简洁、结构化和用户友好的文档。AI 驱动的文档的未来发展可以专注于增强上下文理解,减少幻觉错误,并集成来自可信来源的实时更新以确保准确性。

结论

通过结合现代 AI 技术,这个本地文档助手展示了如何为技术文档创建有效、有用的工具。我们通过利用 RAG 架构、Firecrawl 的 AI 驱动抓取和 DeepSeek 的语言功能,开发了一个使文档更具交互性和可访问性的系统。由于该应用程序的模块化设计,它清楚地区分了抓取、RAG 实现和用户界面组件,从而为满足不同文档需求提供了未来改进和修改的可能性。