ForcePilot/docs/intro/knowledge-base.md
Wenjie Zhang 5b1fd51b27 refactor: 移除 spaCy 图谱抽取器,前端抽取方案收敛为仅 LLM
- 删除 backend/package/yuxi/knowledge/graphs/extractors/spacy.py
- 清理 __init__.py 和 factory.py 中的 spacy 引用
- KnowledgeGraphSection.vue 抽取器类型仅保留 LLM + "更多拓展中"占位
- 补充测试:factory 仅支持 llm、reject spacy、service configure 拒绝 spacy
- 更新 docs/intro/knowledge-base.md 文档描述
2026-05-26 17:40:17 +08:00

3.5 KiB
Raw Blame History

知识库与知识图谱

Yuxi 提供文档知识库、向量检索和知识图谱构建能力。当前支持 Milvus 知识库、Milvus 知识库内的图谱构建/展示/检索,以及 Dify Dataset 只读检索。

为什么需要知识库

在大模型应用场景中,仅依靠模型的内部知识往往不够准确和全面。通过构建知识库,我们可以:

  • 注入私有知识:让模型能够回答基于私有文档的问题
  • 降低幻觉:回答内容可追溯到原始文档
  • 知识复用:一次上传,多轮对话中重复使用

知识库类型

类型 特点 适用场景
Milvus 高性能向量检索,支持文档入库、检索测试、评估和知识图谱构建 自建文档知识库与生产检索
Dify 连接 Dify Dataset 检索 API只读使用 复用已有 Dify 数据集

历史 LightRAG 类型不再作为受支持类型展示或创建。

创建知识库

访问 Web 界面的「知识库」页面,点击「新建知识库」:

  1. 填写知识库名称和描述
  2. 选择 Milvus 或 Dify
  3. Milvus 配置嵌入模型和分块策略Dify 配置 API URL、Token 和 Dataset ID
  4. 配置访问权限
  5. 保存

::: tip 提示 知识库的名称和描述会被智能体用来判断何时应该使用这个知识库进行检索,所以请尽量详细地描述。 :::

文件处理流程

Milvus 文件从上传到可检索,经历三个阶段:

1. 上传阶段

将本地文件上传到服务器。文件保持原始格式存储。

2. 解析阶段

系统将文件转换为 Markdown 格式:

  • 提取文本内容
  • 图片上传到 MinIO并在 Markdown 中用 URL 引用
  • 表格、公式等尽量保持结构化

3. 入库阶段

系统对 Markdown 内容进行分块,将 chunk 元数据保存到 PostgreSQL并将向量写入 Milvus。

在前端界面中,默认会自动完成前两个阶段。如果需要自动入库,勾选「上传后自动入库」选项;否则需要手动点击入库按钮。

知识库权限控制

每个知识库可以配置独立的访问权限:

  • 全局共享:所有用户可访问
  • 部门授权:仅指定部门可访问
  • 私有:仅创建者和管理员可访问

权限规则:

  • 超级管理员可访问所有知识库
  • 管理员可访问共享知识库和本部门的知识库
  • 普通用户只能访问已授权的知识库

知识图谱

Milvus 知识库详情页提供「知识图谱」Tab。图谱构建流程会从已入库 chunks 中抽取实体和关系,并写入 Neo4j 作为图存储。

主要能力:

  • 配置 LLM 抽取器,更多抽取方式拓展中
  • 构建待索引 chunks 的图谱实体与关系
  • 查看构建状态、标签和统计信息
  • 在知识库详情页搜索和展示子图
  • 重置图谱配置与已构建数据

Neo4j 仍作为 Milvus 图谱存储服务保留,但不再提供独立 /graph 前端页面,也不再支持上传 JSONL 三元组到默认全局图谱。

Neo4j 配置

Neo4j 连接信息可以在 .env 中配置:

  • 默认账户:neo4j
  • 默认密码:0123456789
  • 管理界面:http://localhost:7474
  • 连接地址bolt://localhost:7687

API 使用

如果需要通过程序批量处理文件,可以使用以下接口:

# 1. 上传文件
POST /api/knowledge/files/upload?db_id=<知识库ID>
# 返回 file_path 和 content_hash

# 2. 解析并入库
POST /api/knowledge/databases/{db_id}/documents
# 返回 status=queued 和 task_id

系统会自动去重:基于内容哈希判断是否已存在相同文件。