综合介绍
Yuxi-Know 是一个开源的智能问答平台,结合知识图谱和 RAG(检索增强生成)技术,帮助用户快速获取精准答案。它基于 Neo4j 存储知识图谱,使用 FastAPI 和 VueJS 构建后端和前端,支持多种大模型,如 OpenAI、DeepSeek、豆包等。系统集成了 Milvus 向量数据库,支持 PDF、TXT 等多种格式的知识库文件。Yuxi-Know 提供联网检索、DeepSeek-R1 推理模型和工具调用功能,适合开发者构建知识管理或智能客服系统。项目在 GitHub 上开源,易于部署和扩展。
功能列表
- 支持多种大模型调用,包括 OpenAI、DeepSeek、豆包、智谱清言等。
- 提供知识图谱查询,基于 Neo4j 存储结构化数据。
- 支持 RAG 技术,结合知识库和联网检索生成准确答案。
- 集成 DeepSeek-R1 推理模型,处理复杂逻辑问题。
- 提供工具调用功能,通过 API 执行外部任务。
- 支持多种文件格式(PDF、TXT、MD、Docx)构建知识库。
- 使用 Milvus 向量数据库,存储和检索文档向量。
- 提供网页界面,基于 VueJS,操作简单直观。
- 支持本地模型部署,通过 vLLM 或 Ollama 提供 API 服务。
- 允许用户自定义模型和向量模型配置,适配不同需求。
使用帮助
安装流程
Yuxi-Know 使用 Docker 部署,简化安装流程。以下是详细步骤:
- 准备环境
确保安装了 Docker 和 Docker Compose。推荐使用 Linux 或 macOS 系统,Windows 用户需启用 WSL2。检查 Docker 是否正常运行:docker --version
确保 Git 已安装,用于克隆代码。
- 克隆项目
在终端运行以下命令,克隆 Yuxi-Know 代码库:git clone https://github.com/xerrors/Yuxi-Know.git
进入项目目录:
cd Yuxi-Know
- 配置环境变量
Yuxi-Know 需要配置 API 密钥和模型参数。复制模板文件:cp src/.env.template src/.env
使用文本编辑器打开
src/.env
,填入必要的密钥。例如:SILICONFLOW_API_KEY=sk-你的密钥 DEEPSEEK_API_KEY=你的密钥 TAVILY_API_KEY=你的密钥
如果使用其他模型(如 OpenAI、豆包),添加对应密钥:
OPENAI_API_KEY=你的密钥 ARK_API_KEY=你的密钥
默认使用 SiliconFlow 服务,必须配置
SILICONFLOW_API_KEY
。若使用本地模型,需配置模型路径:MODEL_DIR=/path/to/your/models
- 启动服务
在项目根目录运行以下命令,启动所有服务:docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
这会启动 Neo4j、Milvus、FastAPI 后端和 VueJS 前端。首次启动可能需要几分钟。成功后,终端会显示:
[+] Running 7/7 ✔ Network docker_app-network Created ✔ Container graph-dev Started ✔ Container milvus-etcd-dev Started ✔ Container milvus-minio-dev Started ✔ Container milvus-standalone-dev Started ✔ Container api-dev Started ✔ Container web-dev Started
若需后台运行,添加
-d
参数:docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build -d
- 访问系统
打开浏览器,访问http://localhost:5173/
,即可进入 Yuxi-Know 界面。如果无法访问,检查 Docker 容器状态:docker ps
确保所有容器都在运行。若端口冲突,可修改
docker-compose.dev.yml
中的端口配置。 - 关闭服务
停止服务并删除容器:docker compose -f docker/docker-compose.dev.yml --env-file src/.env down
使用主要功能
Yuxi-Know 提供知识图谱查询、知识库检索、联网检索和工具调用功能。以下是详细操作方法:
- 知识图谱查询
Yuxi-Know 使用 Neo4j 存储知识图谱,适合查询结构化数据。例如,查询“北京的首都是什么?”系统会从知识图谱中提取答案。- 导入知识图谱:准备 JSONL 格式文件,每行包含头节点、尾节点和关系,例如:
{"h": "北京", "t": "中国", "r": "首都"}
在界面导航到“图谱管理”,上传 JSONL 文件。系统会自动加载到 Neo4j。
- 访问 Neo4j:启动后,可通过
http://localhost:7474/
访问 Neo4j 面板,默认账户为neo4j
,密码为0123456789
。 - 注意:节点需包含
Entity
标签,否则无法触发索引。
- 导入知识图谱:准备 JSONL 格式文件,每行包含头节点、尾节点和关系,例如:
- 知识库检索
系统支持上传 PDF、TXT、MD、Docx 文件,自动转为向量存储到 Milvus 数据库。操作步骤:- 在界面导航到“知识库管理”,点击“上传文件”。
- 选择文件,系统会将内容转为纯文本,使用向量模型(如
BAAI/bge-m3
)生成向量并存储。 - 查询时,输入问题,如:“文档中提到的人工智能趋势是什么?” 系统会检索相关内容并生成答案。
- 提示:大文件处理可能较慢,建议分段上传。
- 联网检索
当本地知识库无法回答时,系统会启用联网检索。确保配置了TAVILY_API_KEY
。操作方法:- 在界面输入问题,如:“2025 年最新的 AI 技术是什么?”
- 系统通过 Tavily API 抓取网络信息,结合大模型生成答案。
- 结果会显示来源链接,便于验证信息。
- 工具调用
Yuxi-Know 支持通过 API 调用外部工具,例如查询天气或执行脚本。操作步骤:- 在
src/static/models.yaml
中添加工具配置:tools: - name: weather url: https://api.weather.com/v3 api_key: 你的密钥
- 在界面输入:“上海今天的天气如何?” 系统会调用工具并返回结果。
- 在
特色功能操作
- DeepSeek-R1 推理模型
DeepSeek-R1 是 Yuxi-Know 的亮点,适合复杂推理任务。操作方法:- 确保
DEEPSEEK_API_KEY
或SILICONFLOW_API_KEY
已配置。 - 在界面模型选择中切换到
deepseek-r1-250120
。 - 输入问题,如:“一个苹果比橙子贵 2 元,三个苹果和两个橙子总价 16 元,橙子多少钱?” 系统会推理并回答:“橙子 2 元。”
- 优势:能处理多步骤逻辑问题,答案更可靠。
- 确保
- 多模型支持
系统支持切换多种模型,适配不同场景。操作方法:- 在界面右上角下拉菜单选择模型,如
Qwen2.5-7B-Instruct
(SiliconFlow)、gpt-4o
(OpenAI)或doubao-1-5-pro
(豆包)。 - 每种模型有不同优势,例如豆包适合中文语义理解,OpenAI 适合复杂任务。
- 添加新模型:编辑
src/static/models.yaml
,添加供应商配置,例如:zhipu: name: 智谱清言 url: https://api.zhipuai.com/v1 default: glm-4-flash env: - ZHIPUAI_API_KEY
重启服务后,新模型即可使用。
- 在界面右上角下拉菜单选择模型,如
- 本地模型部署
若需使用本地模型(如 LLaMA),可通过 vLLM 或 Ollama 部署。操作步骤:- 启动 vLLM 服务:
vllm serve /path/to/model --host 0.0.0.0 --port 8000
- 在界面“设置”中添加本地模型,输入 URL(如
http://localhost:8000/v1
)。 - 保存后,系统会优先使用本地模型,适合无网络环境。
- 启动 vLLM 服务:
- 向量模型配置
默认使用BAAI/bge-m3
生成向量。若需更换,编辑src/static/models.yaml
:local/nomic-embed-text: name: nomic-embed-text dimension: 768
本地模型会自动下载,若下载失败,可通过 HF-Mirror 镜像站获取。
注意事项
- 网络要求:联网检索和模型调用需稳定网络,建议检查
.env
文件中的密钥。 - Neo4j 配置:若已有 Neo4j 服务,可修改
docker-compose.yml
中的NEO4J_URI
,避免重复部署。 - 镜像下载:若 Docker 镜像拉取失败,可使用 DaoCloud 镜像站:
docker pull m.daocloud.io/docker.io/library/neo4j:latest docker tag m.daocloud.io/docker.io/library/neo4j:latest neo4j:latest
- 日志查看:若服务异常,查看容器日志:
docker logs api-dev
应用场景
- 企业知识管理
企业可将内部文档(如操作手册、技术规范)上传至知识库,或整理成知识图谱。员工通过 Yuxi-Know 查询问题,如“如何配置服务器?” 系统快速返回答案,减少培训时间。 - 学术研究支持
研究者可上传论文或整理学科知识图谱。例如,构建化学分子关系图谱,查询“碳原子的化学键有哪些?” 系统结合图谱和文档返回详细答案,还能联网补充最新研究。 - 智能客服系统
商家可将产品信息和常见问题录入系统。客户提问“如何退货?”时,Yuxi-Know 从知识库提取答案,或联网查询最新政策,提供准确回复。
QA
- 如何上传知识库文件?
在界面导航到“知识库管理”,点击“上传”,选择 PDF、TXT、MD 或 Docx 文件。系统会自动处理并存储到 Milvus 数据库。 - 联网检索需要哪些配置?
需在.env
文件中配置TAVILY_API_KEY
。若无密钥,可通过 SiliconFlow 或 Tavily 官网注册获取。 - 如何调试本地模型?
确保 vLLM 或 Ollama 服务监听0.0.0.0
,并在界面“设置”中添加正确 URL。启动后,通过docker logs api-dev
检查连接状态。 - 知识图谱导入失败怎么办?
检查 JSONL 文件格式,确保每行包含h
、t
、r
字段。上传后,重启 Neo4j 服务并确认节点包含Entity
标签。