Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
0aa8fa1
添加对于 think 标签的解析
xerrors Apr 25, 2025
312521d
Merge pull request #168 from xerrors/parse-thinking-tag
xerrors Apr 25, 2025
e8b2b25
将 refs 移动到侧边栏
xerrors Apr 27, 2025
201f798
Merge remote-tracking branch 'origin' into dev
xerrors Apr 27, 2025
aba91f7
Merge branch 'refs-sidebar' into dev
xerrors Apr 27, 2025
8ef114c
Merge remote-tracking branch 'origin' into dev
xerrors Apr 28, 2025
be0801d
env update
xerrors Apr 28, 2025
8030aa9
修改环境部署方法,部署速度更快
xerrors Apr 28, 2025
edb9251
更新文档
xerrors Apr 28, 2025
bc168d0
基本权限控制功能实现
xerrors May 2, 2025
a6a25b1
Merge remote-tracking branch 'origin' into dev
xerrors May 2, 2025
83f81e6
Merge branch 'dev' into auth
xerrors May 2, 2025
1213cd5
统一前端对于接口的使用
xerrors May 4, 2025
0fd83d1
移除无关引入
xerrors May 4, 2025
7b6a1b4
继续优化接口,移除无关模块:(1)移除原本的 Token 管理模块;(2)所有 API 请求使用 /api 前缀;(3)移除重复的中间件验…
xerrors May 5, 2025
39bfc3d
暂时屏蔽对话历史管理(数据库)
xerrors May 5, 2025
36b8cc8
优化配置更新方法
xerrors May 5, 2025
cde6a25
修复system prompt 对于 DeepSeek 接口要求 system prompt 必须在第一个的 bug
xerrors May 5, 2025
b7ea0a4
添加任务待办
xerrors May 5, 2025
cd356f6
优化样式
xerrors May 6, 2025
61a32b3
Merge pull request #173 from xerrors/auth
xerrors May 6, 2025
970abc9
Merge remote-tracking branch 'origin' into dev
xerrors May 6, 2025
a4ca92f
Merge branch 'dev' of https://github.com/xerrors/Yuxi-Know into dev
xerrors May 6, 2025
0dc25f6
支持使用URL添加到知识库;
xerrors May 6, 2025
7301112
更新 dockerfile 中对于 uv 的配置
xerrors May 6, 2025
008206e
文档更新
xerrors May 6, 2025
efee814
test push
xerrors May 6, 2025
789221c
添加 uv.lock 文件
xerrors May 7, 2025
f0a7742
Merge pull request #182 from xerrors/178-uv-lock
xerrors May 7, 2025
1fc6e70
优化镜像打包
xerrors May 9, 2025
1fad0b8
addwindow script
xerrors May 9, 2025
adda224
Docker: 优化 docker 部署,配置环境变量默认参数,可以被环境变量覆盖,优化重启机制
xerrors May 9, 2025
e422fd3
修复:修复文件上传的权限问题
xerrors May 9, 2025
95b8b64
优化本地 embedding 的GPU 处理问题,添加 GPU 部署映射
xerrors May 9, 2025
79d4fc7
修复知识图谱文件上传 BUG
xerrors May 9, 2025
b1a7811
进一步优化并行处理能力:file-to-chunk 部分优化完成
xerrors May 9, 2025
98e397d
优化改写逻辑,默认启用改写查询
xerrors May 9, 2025
f8e0de7
fix 修复对话页面切换模型的问题
xerrors May 9, 2025
c4f475e
添加 消息 console
xerrors May 9, 2025
f086cde
fix add chunks bug
xerrors May 9, 2025
3ab3f55
优化样式,优化登录页面
xerrors May 9, 2025
50eb17a
添加 知识库信息更新方法,支持修改标题和描述
xerrors May 10, 2025
205bec8
添加对于 think 标签的解析
xerrors Apr 25, 2025
76e1921
将 refs 移动到侧边栏
xerrors Apr 27, 2025
c36d504
env update
xerrors Apr 28, 2025
0d39e97
修改环境部署方法,部署速度更快
xerrors Apr 28, 2025
89a390d
更新文档
xerrors Apr 28, 2025
9fdc6a6
基本权限控制功能实现
xerrors May 2, 2025
c6474f6
统一前端对于接口的使用
xerrors May 4, 2025
50ce0b3
移除无关引入
xerrors May 4, 2025
a454389
继续优化接口,移除无关模块:(1)移除原本的 Token 管理模块;(2)所有 API 请求使用 /api 前缀;(3)移除重复的中间件验…
xerrors May 5, 2025
43542ee
暂时屏蔽对话历史管理(数据库)
xerrors May 5, 2025
67a1522
优化配置更新方法
xerrors May 5, 2025
044de7e
修复system prompt 对于 DeepSeek 接口要求 system prompt 必须在第一个的 bug
xerrors May 5, 2025
5b3c8f1
添加任务待办
xerrors May 5, 2025
46f2523
优化样式
xerrors May 6, 2025
7449938
支持使用URL添加到知识库;
xerrors May 6, 2025
d9ef3fc
更新 dockerfile 中对于 uv 的配置
xerrors May 6, 2025
fa518c8
文档更新
xerrors May 6, 2025
a46fcef
test push
xerrors May 6, 2025
3bbe64d
添加 uv.lock 文件
xerrors May 7, 2025
3316732
优化镜像打包
xerrors May 9, 2025
fe909fb
addwindow script
xerrors May 9, 2025
0d187ab
Docker: 优化 docker 部署,配置环境变量默认参数,可以被环境变量覆盖,优化重启机制
xerrors May 9, 2025
d5d5708
修复:修复文件上传的权限问题
xerrors May 9, 2025
ab809f7
优化本地 embedding 的GPU 处理问题,添加 GPU 部署映射
xerrors May 9, 2025
d474f77
修复知识图谱文件上传 BUG
xerrors May 9, 2025
144632b
进一步优化并行处理能力:file-to-chunk 部分优化完成
xerrors May 9, 2025
ea40fa4
优化改写逻辑,默认启用改写查询
xerrors May 9, 2025
bfce984
fix 修复对话页面切换模型的问题
xerrors May 9, 2025
63975bc
添加 消息 console
xerrors May 9, 2025
be53fc8
fix add chunks bug
xerrors May 9, 2025
d6a5a82
优化样式,优化登录页面
xerrors May 9, 2025
8a66647
添加 知识库信息更新方法,支持修改标题和描述
xerrors May 10, 2025
eb1ff57
Merge branch 'dev' of https://github.com/xerrors/Yuxi-Know into dev
xerrors May 10, 2025
c87f01b
Merge remote-tracking branch 'origin' into dev
xerrors May 10, 2025
d0ded4d
修复 重排序模型的启动问题
xerrors May 10, 2025
b01abfc
feat: Agent配置可以同步在用户侧了,用户侧会使用 config file 中的配置
xerrors May 13, 2025
e66a593
fix 解决编辑用户无法取消修改密码
BondChang May 15, 2025
a292e69
feat: 添加消息记录云端保存
xerrors May 15, 2025
b81f31c
fix 优化对话标题显示方法
xerrors May 15, 2025
645acff
fix 修复时区显示问题以及知识库描述显示不全的问题
xerrors May 15, 2025
548b018
perf 暂时屏蔽ReActAgent
xerrors May 15, 2025
6212f5c
fix: 修复普通用户的权限问题
xerrors May 15, 2025
77ce5a2
feat: Agent 消息保存在SQLite 中
xerrors May 16, 2025
8c8abdc
fix: 修复工具调用问题
xerrors May 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ logs
*.log.*
*.db
*.lock
!uv.lock
tmp
cache

Expand Down
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.11
177 changes: 42 additions & 135 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,39 +17,41 @@
**核心特点:**

- 🤖 多模型支持:适配 OpenAI、各大国内主流大模型平台,以及本地 vllm、ollama 部署
- 📚 灵活知识库:支持 PDF、TXT、MD 等多种格式文档
- 📚 灵活知识库:支持 PDF、TXT、MD、Docx 等多种格式文档,支持通过 URL 添加文件
- 🕸️ 知识图谱集成:基于 Neo4j 的知识图谱问答能力
- 🚀 简单配置:只需配置对应服务平台的 `API_KEY` 即可使用
- 🤖 智能体拓展:可以编写自己的智能体代码(Dev过程,非正式版)
- 🌐 网页检索:支持联网搜索,辅助回答最新信息
- 🤖 智能体拓展:可以编写自己的智能体代码
- ⚒️ 适合二次开发:更多的开发自定义项

![系统界面预览](https://github.com/user-attachments/assets/75010511-4ac5-4924-8268-fea9a589839c)

## 📋 更新日志

- **2025.05.07** - 新增权限控制功能,主要角色分为 超级管理员、管理员、普通用户 [PR#173](https://github.com/xerrors/Yuxi-Know/pull/173)
- **2025.03.30** - 系统中集成智能体(WIP, [PR#96](https://github.com/xerrors/Yuxi-Know/pull/96))
- **2025.02.24** - 新增网页检索以及内容展示,需配置 `TAVILY_API_KEY`,感谢 [littlewwwhite](https://github.com/littlewwwhite)
- **2025.02.23** - SiliconFlow 的 Rerank 和 Embedding model 支持,现默认使用 SiliconFlow
- **2025.02.20** - DeepSeek-R1 支持,需配置 `DEEPSEEK_API_KEY` 或 `SILICONFLOW_API_KEY`
- **2024.10.12** - 后端修改为 [FastAPI](https://github.com/fastapi),添加 [Milvus-Standalone](https://github.com/milvus-io) 独立部署

![功能展示](https://github.com/user-attachments/assets/8416a933-cc43-45d0-bf06-00df0ba6c4fb)

| PC 网页 | 小屏设备 |
| :-------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |
| ![image](https://github.com/user-attachments/assets/5f3d7e69-baa8-4c59-90fc-391343e59af6) | ![image](https://github.com/user-attachments/assets/51efabce-a097-47fd-9fca-d3b0943af86a) |
## 🚀 快速开始

### 环境配置

在启动前,您需要提供 API 服务商的 API_KEY,并放置在 `src/.env` 文件中(此文件项目中没有,需要自行参考 [src/.env.template](src/.env.template) 创建)。更多可配置项,可参考 后面**对话模型**部分。
在启动前,您需要提供 API 服务商的 API_KEY,并放置在 `src/.env` 文件中(此文件项目中没有,需要自行参考 [src/.env.template](src/.env.template) 创建)。更多可配置项,可参考下方**对话模型**部分。

默认使用硅基流动的服务,因此**必须**配置:

```
SILICONFLOW_API_KEY=sk-270ea********8bfa97.e3XOMd****Q1Sk
OPENAI_API_KEY=<API_KEY> # 如果需要配置 openai 则添加此行,并替换 API_KEY
DEEPSEEK_API_KEY=<API_KEY> # 如果配置 DeepSeek 添加此行,并替换 API_KEY
ZHIPUAI_API_KEY=<API_KEY> # 如果配置 智谱清言 添加此行,并替换 API_KEY
```

其他可选配置:
```
OPENAI_API_KEY=<API_KEY> # OpenAI 服务
DEEPSEEK_API_KEY=<API_KEY> # DeepSeek 服务
ZHIPUAI_API_KEY=<API_KEY> # 智谱清言服务
TAVILY_API_KEY=<TAVILY_API_KEY> # 联网搜索功能
```

需要确保账户有一点点额度供调用,或使用这个链接注册[SiliconFlow 注册(含邀请码)](https://cloud.siliconflow.cn/i/Eo5yTHGJ)获得 14 元的赠送额度。
Expand All @@ -58,15 +60,16 @@ ZHIPUAI_API_KEY=<API_KEY> # 如果配置 智谱清言 添加此行,并替换

### 启动服务

> 确保已经安装了 [docker](https://docs.docker.com/engine/install/ubuntu/) 以及 [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)

**开发环境启动**(源代码修改会自动更新):

```bash
docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
docker compose up --build
```

> 添加 `-d` 参数可在后台运行


成功启动后,会看到以下容器:

```
Expand All @@ -80,55 +83,16 @@ docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
✔ Container web-dev Started
```

访问 [http://localhost:5173/](http://localhost:5173/) 即可使用系统。

### 系统预览

![系统演示](./images/demo.gif)

问答支持 Deepseek-R1 等推理模型、知识图谱检索、知识库检索、网页检索

![Image](https://github.com/user-attachments/assets/97ad6771-e4a2-4324-a001-ecb0abe40fdd)

网页检索结果:

![Image](https://github.com/user-attachments/assets/20d51700-78d5-48a8-ab16-00bc98a1df37)

知识图谱检索结果:

![Image](https://github.com/user-attachments/assets/61b4e06f-4e6e-4a75-bfcb-b1a424523bb6)

知识库检索结果

![Image](https://github.com/user-attachments/assets/53e786f4-08d7-45c1-bcec-df46d0c3c49b)

知识库管理:


![Image](https://github.com/user-attachments/assets/55a6de55-59a0-4636-9c00-e4bfd6573c1b)

![Image](https://github.com/user-attachments/assets/0f4f39ba-e6b7-4f18-a3c3-147477922f58)


知识图谱

![Image](https://github.com/user-attachments/assets/5849d875-801c-4d29-9d38-9245685e9d73)

可视化配置:

![Image](https://github.com/user-attachments/assets/5faac8bc-7968-42d0-a77d-5f8881a24de1)

丰富的模型支持:

![Image](https://github.com/user-attachments/assets/7a54ca07-78da-4aef-b0a0-47aa539dae8e)
注:当内存不足时,可能会出现 Milvus 没有正常启动的情况。此时需要运行 `docker compose up milvus -d` 重新启动 Milvus,并重启 API 服务 `docker restart api-dev`。

访问 [http://localhost:5173/](http://localhost:5173/) 即可使用系统。

### 服务管理

**关闭服务**:

```bash
docker compose -f docker/docker-compose.dev.yml --env-file src/.env down
docker compose down
```

**查看日志**:
Expand All @@ -143,18 +107,21 @@ docker logs <容器名称> # 例如:docker logs api-dev

本项目支持通过 API 调用的模型,本地模型需使用 vllm、ollama 转成 API 服务后使用。

| 模型供应商 | 默认模型 | 配置项目 |
| :--------------------- | :---------------------------------- | :--------------------------------------------- |
| `siliconflow` (默认) | `Qwen/Qwen2.5-7B-Instruct` (免费) | `SILICONFLOW_API_KEY` |
| `openai` | `gpt-4o` | `OPENAI_API_KEY` |
| `deepseek` | `deepseek-chat` | `DEEPSEEK_API_KEY` |
| `arc`(豆包方舟) | `doubao-1-5-pro-32k-250115` | `ARK_API_KEY` |
| `zhipu`(智谱清言) | `glm-4-flash` | `ZHIPUAI_API_KEY` |
| `dashscope`(阿里) | `qwen-max-latest` | `DASHSCOPE_API_KEY` |
| 模型供应商 | 默认模型 | 配置项目 |
| :--------------------- | :---------------------------------- | :---------------------- |
| `siliconflow` (默认) | `Qwen/Qwen2.5-7B-Instruct` (免费) | `SILICONFLOW_API_KEY` |
| `openai` | `gpt-4o` | `OPENAI_API_KEY` |
| `deepseek` | `deepseek-chat` | `DEEPSEEK_API_KEY` |
| `arc`(豆包方舟) | `doubao-1-5-pro-32k-250115` | `ARK_API_KEY` |
| `zhipu`(智谱清言) | `glm-4-flash` | `ZHIPUAI_API_KEY` |
| `dashscope`(阿里) | `qwen-max-latest` | `DASHSCOPE_API_KEY` |
| `together.ai` | `meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` | `TOGETHER_API_KEY` |
| `lingyiwanwu`(零一)| `yi-lightning` | `LINGYIWANWU_API_KEY` |
| `openrouter` | `openai/gpt-4o` | `OPENROUTER_API_KEY` |

#### 添加新模型供应商

如需添加供应商模型,了解 OpenAI 调用方法后,只需在 [src/static/models.yaml](src/static/models.yaml) 中添加对应配置:
如需添加供应商模型,了解 OpenAI 调用方法后, [src/static/models.yaml](src/static/models.yaml) 中添加对应配置:

```yaml
ark:
Expand All @@ -170,67 +137,21 @@ ark:
- deepseek-r1-250120
```

#### 本地模型部署

支持添加以 OpenAI 兼容模式运行的本地模型,可在 Web 设置中直接添加(适用于 vllm 和 Ollama 等)。

> [!注意]
> 使用 docker 运行此项目时,ollama 或 vllm 需监听 `0.0.0.0`

![本地模型配置](./images/custom_models.png)

### 2. 向量模型与重排序模型

建议使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 [src/static/models.yaml](src/static/models.yaml)。

对于**向量模型**和**重排序模型**,选择 `local` 前缀的模型会自动下载。如遇下载问题,请参考 [HF-Mirror](https://hf-mirror.com/) 配置。

要使用已下载的本地模型,可在 models.yaml 或者网页设置中映射。

![image](https://github.com/user-attachments/assets/ab62ea17-c7d0-4f94-84af-c4bab26865ad)
本地模型部署参考 [how-to.md](./docs/how-to.md)

### 2. 向量模型和重排序模型

**添加向量模型**
强烈建议测试阶段先使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 [src/static/models.yaml](src/static/models.yaml)。

```yaml
# src/static/models.yaml
# 添加本地向量模型(所有 FlagEmbedding 支持的模型)
local/BAAI/bge-m3:
name: BAAI/bge-m3
dimension: 1024
# local_path: /models/BAAI/bge-m3,也可以在这里配置

# 添加 OpenAI 兼容的向量模型
siliconflow/BAAI/bge-m3:
name: BAAI/bge-m3
dimension: 1024
url: https://api.siliconflow.cn/v1/embeddings
api_key: SILICONFLOW_API_KEY

# 添加 Ollama 模型
ollama/nomic-embed-text:
name: nomic-embed-text
dimension: 768
```

## 📚 知识库支持
选择 `local` 前缀的模型会自动下载。如遇下载问题,请参考 [HF-Mirror](https://hf-mirror.com/) 配置。详细配置过程请参考 [how-to.md](./docs/how-to.md)。

本项目支持多种格式的知识库文件:
## 📚 知识库功能

- PDF
- Txt
- Markdown
- Docx
本项目支持多种格式的知识库文件:PDF、TXT、Markdown、Docx。支持通过 URL 添加文件。

文件上传后,系统会:
文件上传后,系统会对文件进行分块、索引、存储到向量数据库(Milvus)中,此过程可能需要一定时间,请耐心等待。

1. 将文件转换为纯文本
2. 使用向量模型将文本转换为向量
3. 存储到向量数据库中

> 此过程可能需要一定时间,请耐心等待。

## 🕸️ 知识图谱支持
## 🕸️ 知识图谱功能

本项目使用 Neo4j 作为知识图谱存储。您需要将图谱整理成 jsonl 格式,每行格式为:

Expand All @@ -249,9 +170,9 @@ ark:
- 默认账户:`neo4j`
- 默认密码:`0123456789`

可在 `docker/docker-compose.yml` 和 `docker/docker-compose.dev.yml` 中修改配置(注意同时修改 `api.environment` 和 `graph.environment`)。
可在 `docker-compose.yml` 中修改配置(注意同时修改 `api.environment` 和 `graph.environment`)。

目前项目暂不支持同时查询多个知识图谱。如已有基于 neo4j 的知识图谱,可删除 `docker-compose.yml` 中的 `graph` 配置项,并修改 `api.environment` 中的 `NEO4J_URI` 为您的 neo4j 服务地址。同时,需要确保节点的标签中包含 Entity 标签,才能正常触发索引。
如已有基于 neo4j 的知识图谱,可删除 `docker-compose.yml` 中的 `graph` 配置项,并修改 `api.environment` 中的 `NEO4J_URI` 为您的 neo4j 服务地址。同时,需要确保节点的标签中包含 Entity 标签,才能正常触发索引。

## 贡献者名单

Expand All @@ -261,20 +182,6 @@ ark:
<img src="https://contributors.nn.ci/api?repo=xerrors/Yuxi-Know" alt="贡献者名单">
</a>

## ❓ 常见问题

### 镜像下载问题

如无法直接下载相关镜像,可参考 [DaoCloud/public-image-mirror](https://github.com/DaoCloud/public-image-mirror?tab=readme-ov-file#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B),尝试替换前缀:

```bash
# 以 neo4j 为例,其余类似
docker pull m.daocloud.io/docker.io/library/neo4j:latest

# 然后重命名镜像
docker tag m.daocloud.io/docker.io/library/neo4j:latest neo4j:latest
```

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=xerrors/Yuxi-Know)](https://star-history.com/#xerrors/Yuxi-Know)
Loading