ForcePilot/docs/intro/knowledge-base.md

83 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 知识库与知识图谱
项目中的知识库与知识图谱,即是知识管理组织的方式,同时会被封装为工具供 AgenticRAG 系统调用。
## 创建知识库
系统支持多种知识库存储形式,满足不同场景需求:
| 存储类型 | 特点 | 适用场景 |
|----------|------|----------|
| **Chroma** | 轻量级向量数据库 | 小型项目、快速原型、维护方便 |
| **Milvus** | 高性能向量数据库 | 大规模生产环境、高性能查询 |
| **LightRAG** | 图增强检索 | 复杂知识关系,构建成本较高 |
访问 Web 界面http://localhost:5173进入"知识库管理"页面,点击"新建知识库",填写知识库信息。
这里需要**注意**的是,这里的知识库的标题和描述都会作为智能体选择工具的依据,因此尽量详尽的描述该知识库。
### LightRAG 知识库说明
在本项目中,系统支持基于 [LightRAG](https://github.com/HKUDS/LightRAG) 的知识图谱自动构建,能够从文档中自动提取实体和关系,构建结构化知识图谱。但是 LightRAG 所构建的知识图谱不作为全局的知识图谱来使用。只是将 LightRAG 作为知识的组织和检索形式。一方面是因为 LightRAG 构建的图谱的质量比较差,另一方面是不希望与全局的知识图谱弄混。
LightRAG 知识库可在知识库详情中可视化,但不支持在侧边栏图谱中直接检索,图谱检索工具不支持 LightRAG 知识库,查询需要使用对应的知识库作为工具。
在 Neo4j 的检索中可以看到,实际上 LightRAG 的节点和边依然是和知识图谱本身构建在了同一个 Neo4j 数据库中,但是使用了特殊的 tag 做区分。这点在后面介绍知识图谱的时候也会额外说明。
系统默认使用 `siliconflow``Qwen/Qwen3-30B-A3B-Instruct-2507` 模型进行图谱构建。可通过环境变量自定义图谱构建模型:
<<< @/../src/.env.template#lightrag{bash}
## 文档管理
::: danger
待补充
:::
## 知识图谱
::: danger
待补充关于知识图谱在项目中的定位
:::
### 1. 以三元组形式导入
系统支持通过网页导入 `jsonl` 格式的知识图谱数据
```jsonl
{"h": "北京", "t": "中国", "r": "首都"}
{"h": "上海", "t": "中国", "r": "直辖市"}
{"h": "深圳", "t": "广东", "r": "省会"}
```
**格式说明**每行一个三元组系统自动验证数据格式并自动导入到 Neo4j 数据库添加 `Upload`、`Entity`、`Relation` 标签会自动处理重复的三元组
Neo4j 访问信息可以参考 `docker-compose.yml` 中配置对应的环境变量来覆盖
- **默认账户**: `neo4j`
- **默认密码**: `0123456789`
- **管理界面**: http://localhost:7474
- **连接地址**: bolt://localhost:7687
::: tip 测试数据
可以使用 `test/data/A_Dream_of_Red_Mansions_tiny.jsonl` 文件进行测试导入
:::
### 2. 接入已有 Neo4j 实例
如需接入已有的 Neo4j 实例可修改 `.env` 中的配置
<<< @/../src/.env.template#neo4j{bash}
同时记得注释掉下面的 neo4j 服务
<<< @/../docker-compose.yml#neo4j
::: warning 注意事项
确保每个节点都有 `Entity` 标签每个关系都有 `RELATION` 类型否则会影响图的检索与构建功能
:::