docs: 更新 README 文档等
This commit is contained in:
parent
84039ae474
commit
d9a796aec1
351
README.md
351
README.md
@ -1,4 +1,5 @@
|
||||
<h1 align="center">语析 - 基于大模型的知识库与知识图谱问答系统</h1>
|
||||
|
||||
<div align="center">
|
||||
|
||||

|
||||
@ -10,230 +11,224 @@
|
||||
|
||||
</div>
|
||||
|
||||
## 📝 项目概述
|
||||
## 📖 简介
|
||||
|
||||
语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex + VueJS + FastAPI + Neo4j 构建。
|
||||
语析是一个功能强大的智能问答平台,融合了 RAG 知识库与知识图谱技术,基于 LangGraph + Vue.js + FastAPI + LightRAG 架构构建。
|
||||
|
||||
**核心特点:**
|
||||
### ✨ 核心特性
|
||||
|
||||
- 🤖 多模型支持:适配 OpenAI、各大国内主流大模型平台,以及本地 vllm、ollama 部署,只需配置对应服务平台的 `API_KEY` 即可使用。
|
||||
- 📚 灵活知识库:支持 PDF、TXT、MD、Docx 等多种格式文档,支持通过 URL 添加文件,支持联网搜索,辅助回答最新信息。
|
||||
- 🤖 智能体拓展:可以编写自己的智能体代码,适合二次开发:更多的开发自定义项;兼容 LangGraph 部署方法 WIP。
|
||||
- 🕸️ 知识图谱集成:基于 Neo4j 的知识图谱问答能力,可链接已有知识图谱。
|
||||
- 🤖 **多模型支持** - 兼容 OpenAI、国内主流大模型平台及本地部署(vLLM、Ollama)
|
||||
- 📚 **灵活知识库** - 支持 PDF、TXT、MD、Docx 等格式,支持 URL 导入和联网搜索
|
||||
- 🤖 **智能体扩展** - 支持自定义智能体开发,兼容 LangGraph 部署
|
||||
- 🕸️ **知识图谱** - 基于 Neo4j 的图谱问答,可接入现有知识图谱
|
||||
- 👥 **权限控制** - 支持超级管理员、管理员、普通用户三级权限体系
|
||||
|
||||

|
||||
|
||||
https://github.com/user-attachments/assets/15f7f315-003d-4e41-a260-739c2529f824
|
||||
|
||||

|
||||
|
||||
## 📋 更新日志
|
||||
|
||||
- **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`
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
> 建议 clone stable 版本的代码
|
||||
### 系统要求
|
||||
|
||||
```bash
|
||||
git clone -b stable https://github.com/xerrors/Yuxi-Know.git
|
||||
- Docker 和 Docker Compose
|
||||
- 2GB+ 可用内存
|
||||
- (可选)CUDA 支持的 GPU(用于 OCR 服务)
|
||||
|
||||
### 一键启动
|
||||
|
||||
1. **克隆项目**
|
||||
```bash
|
||||
git clone -b stable https://github.com/xerrors/Yuxi-Know.git
|
||||
cd Yuxi-Know
|
||||
```
|
||||
|
||||
2. **配置 API 密钥**
|
||||
|
||||
复制环境变量模板并编辑:
|
||||
```bash
|
||||
cp src/.env.template src/.env
|
||||
```
|
||||
|
||||
**必需配置**(推荐使用硅基流动免费服务):
|
||||
```env
|
||||
SILICONFLOW_API_KEY=sk-270ea********8bfa97.e3XOMd****Q1Sk
|
||||
```
|
||||
> 💡 [免费获取 SiliconFlow API Key](https://cloud.siliconflow.cn/i/Eo5yTHGJ)(注册即送 14 元额度)
|
||||
|
||||
3. **启动服务**
|
||||
```bash
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
添加 `-d` 参数可后台运行。启动完成后访问:[http://localhost:5173](http://localhost:5173)
|
||||
|
||||
4. **停止服务**
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
### 故障排除
|
||||
|
||||
- **内存不足**:如果 Milvus 启动失败,执行 `docker compose up milvus -d && docker restart api-dev`
|
||||
- **查看日志**:`docker logs api-dev -f`
|
||||
|
||||
## 📋 更新日志
|
||||
|
||||
- **2025.05.07** - 新增三级权限控制系统 [PR#173](https://github.com/xerrors/Yuxi-Know/pull/173)
|
||||
- **2025.03.30** - 智能体功能集成 [PR#96](https://github.com/xerrors/Yuxi-Know/pull/96)
|
||||
- **2025.02.24** - 新增网页检索功能,支持实时信息获取
|
||||
- **2025.02.23** - SiliconFlow Rerank 和 Embedding 模型支持
|
||||
- **2025.02.20** - DeepSeek-R1 模型支持
|
||||
|
||||
## 🤖 模型配置
|
||||
|
||||
### 对话模型
|
||||
|
||||
支持多种 API 服务商,配置对应的 `API_KEY` 即可使用:
|
||||
|
||||
| 服务商 | 推荐模型 | 环境变量 | 备注 |
|
||||
|--------|---------|----------|------|
|
||||
| 硅基流动 | `Qwen2.5-7B-Instruct` | `SILICONFLOW_API_KEY` | 🆓 免费,默认 |
|
||||
| OpenAI | `gpt-4o` | `OPENAI_API_KEY` | |
|
||||
| DeepSeek | `deepseek-chat` | `DEEPSEEK_API_KEY` | |
|
||||
| 豆包方舟 | `doubao-pro` | `ARK_API_KEY` | |
|
||||
| 智谱清言 | `glm-4-flash` | `ZHIPUAI_API_KEY` | |
|
||||
| 阿里云 | `qwen-max-latest` | `DASHSCOPE_API_KEY` | |
|
||||
|
||||
**完整配置示例:**
|
||||
```env
|
||||
# 基础配置(必需)
|
||||
SILICONFLOW_API_KEY=sk-your-key-here
|
||||
|
||||
# 可选配置
|
||||
OPENAI_API_KEY=sk-your-openai-key
|
||||
DEEPSEEK_API_KEY=sk-your-deepseek-key
|
||||
TAVILY_API_KEY=your-tavily-key # 联网搜索功能
|
||||
```
|
||||
|
||||
### 环境配置
|
||||
### 本地模型部署
|
||||
|
||||
在启动前,您需要提供 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 服务
|
||||
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 元的赠送额度。
|
||||
|
||||
> 本项目的基础对话服务可在不含显卡的设备上运行,大模型使用在线服务商的接口。
|
||||
|
||||
### 启动服务
|
||||
|
||||
> 确保已经安装了 [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 up --build
|
||||
```
|
||||
|
||||
> 添加 `-d` 参数可在后台运行
|
||||
|
||||
|
||||
注:当内存不足时,可能会出现 Milvus 没有正常启动的情况。此时需要运行 `docker compose up milvus -d` 重新启动 Milvus,并重启 API 服务 `docker restart api-dev`。
|
||||
|
||||
访问 [http://localhost:5173/](http://localhost:5173/) 即可使用系统。
|
||||
|
||||
|
||||
**关闭服务**:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
**查看日志**:
|
||||
|
||||
```bash
|
||||
docker logs <容器名称> -f # 例如:docker logs api-dev
|
||||
```
|
||||
|
||||
## 💻 模型支持
|
||||
|
||||
### 1. 对话模型
|
||||
|
||||
本项目支持通过 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` |
|
||||
| `together.ai` | `meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` | `TOGETHER_API_KEY` |
|
||||
| `openrouter` | `openai/gpt-4o` | `OPENROUTER_API_KEY` |
|
||||
|
||||
#### 添加新模型供应商
|
||||
|
||||
如需添加供应商模型,了解 OpenAI 调用方法后,在 [src/static/models.yaml](src/static/models.yaml) 中添加对应配置:
|
||||
|
||||
```yaml
|
||||
ark:
|
||||
name: 豆包(Ark)
|
||||
url: https://console.volcengine.com/ark/region:ark+cn-beijing/model # 模型列表
|
||||
default: doubao-1-5-pro-32k-250115 # 默认模型
|
||||
base_url: https://ark.cn-beijing.volces.com/api/v3
|
||||
env: # 需要配置的环境变量,仅限API key
|
||||
- ARK_API_KEY
|
||||
models:
|
||||
- doubao-1-5-pro-32k-250115
|
||||
- doubao-1-5-lite-32k-250115
|
||||
- deepseek-r1-250120
|
||||
```
|
||||
|
||||
### 如何配置本地大语言模型?
|
||||
|
||||
支持添加以 OpenAI 兼容模式运行的本地模型,可在 Web 设置中直接添加(适用于 vllm 和 Ollama 等)。 参考 [scripts/vllm/run.sh](scripts/vllm/run.sh) 中的配置,运行该脚本即可部署本地模型,或者使用 Ollama 部署模型。
|
||||
|
||||
> [!NOTE]
|
||||
> 使用 docker 运行此项目时,ollama 或 vllm 需监听 `0.0.0.0`
|
||||
支持通过 vLLM 或 Ollama 部署本地模型:
|
||||
然后在 Web 界面的"设置"中添加本地模型地址。
|
||||
|
||||

|
||||
|
||||
## 📚 功能详解
|
||||
|
||||
### 服务说明
|
||||
### 知识库管理
|
||||
|
||||
项目中会启动多个服务,包括但不限于下面
|
||||
- **多格式支持**:PDF、TXT、Markdown、Docx、Excel 等
|
||||
- **多种导入方式**:本地上传、URL 导入、批量导入
|
||||
- **智能分块**:自动优化文档分割策略
|
||||
- **向量检索**:基于 Milvus 的高效相似度搜索
|
||||
|
||||
|端口|服务|说明|
|
||||
|--|--|--|
|
||||
|5173|web|前端服务|
|
||||
|5050|api|后端服务|
|
||||
|7474, 7687|neo4j|图数据库接口|
|
||||
|9000, 9001|minio|文件数据库|
|
||||
|19530, 9091|mivlus|向量数据库|
|
||||
|30000|mineru|PDF解析(默认不启用)|
|
||||
|8080|paddlex|PP-Structure-V3 服务(默认不启用)|
|
||||
|8081|vllm|模型本地推理服务(默认不启用)|
|
||||
### 知识图谱
|
||||
|
||||
使用 Neo4j 构建知识图谱问答能力:
|
||||
|
||||
1. **数据格式**:支持 JSONL 格式导入
|
||||
```jsonl
|
||||
{"h": "北京", "t": "中国", "r": "首都"}
|
||||
{"h": "上海", "t": "中国", "r": "直辖市"}
|
||||
```
|
||||
|
||||
### 2. 向量模型和重排序模型
|
||||
2. **图谱访问**:
|
||||
- Web 界面:[http://localhost:7474](http://localhost:7474)
|
||||
- 默认账户:`neo4j` / `0123456789`
|
||||
|
||||
> 提醒:在 0.2.0 版本之后,将不再支持本地向量模型和本地重排序模型,届时除了 OCR 之外(CPU-ONLY),项目本身启动后不会运行任何 AI 模型。其余的 Embedding、Reranker 模型将需要使用单独的部署脚本,与项目本身的服务解耦。
|
||||
3. **现有图谱接入**:修改 `docker-compose.yml` 中的 `NEO4J_URI` 配置
|
||||
|
||||
~~强烈建议测试阶段先使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 [src/static/models.yaml](src/static/models.yaml)~~
|
||||
~~选择 `local` 前缀的模型会自动下载。如遇下载问题,请参考 [HF-Mirror](https://hf-mirror.com/) 配置。~~
|
||||
### 高级功能
|
||||
|
||||
## 📚 知识库功能
|
||||
- **联网搜索**:配置 `TAVILY_API_KEY` 获取实时信息
|
||||
- **智能体开发**:支持自定义智能体逻辑
|
||||
- **权限管理**:三级用户权限体系
|
||||
- **OCR 增强**:可选 MinerU 或 PP-Structure-V3 服务
|
||||
|
||||
本项目支持多种格式的知识库文件:PDF、TXT、Markdown、Docx。支持通过 URL 添加文件。
|
||||
## 🔧 高级配置
|
||||
|
||||
文件上传后,系统会对文件进行分块、索引、存储到向量数据库(Milvus)中,此过程可能需要一定时间,请耐心等待。
|
||||
### OCR 服务(可选)
|
||||
|
||||
## 🕸️ 知识图谱功能
|
||||
|
||||
本项目使用 Neo4j 作为知识图谱存储。您需要将图谱整理成 jsonl 格式,每行格式为:
|
||||
|
||||
```
|
||||
{"h": "北京", "t": "中国", "r": "首都"}
|
||||
```
|
||||
|
||||
然后在网页的图谱管理中添加此文件。
|
||||
|
||||
系统启动后会自动启动 neo4j 服务:
|
||||
|
||||
- 访问地址:[http://localhost:7474/](http://localhost:7474/)
|
||||
- 默认账户:`neo4j`
|
||||
- 默认密码:`0123456789`
|
||||
|
||||
可在 `docker-compose.yml` 中修改配置。
|
||||
|
||||
如已有基于 neo4j 的知识图谱,可删除 `docker-compose.yml` 中的 `graph` 配置项,并修改 `api.environment` 中的 `NEO4J_URI` 为您的 neo4j 服务地址。同时,需要确保节点的标签中包含 Entity 标签,才能正常触发索引。
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 如何优雅的拉取镜像?
|
||||
|
||||
使用 `bash docker/pull_image.sh python:3.12` 就可以。
|
||||
|
||||
|
||||
### 如何配置 MinerU 或者 PP-Structure-V3 抽取数据
|
||||
|
||||
在 PDF 数据处理中,可以选择配置 [MinerU](https://github.com/opendatalab/MinerU) 来实现更快速、更准确的 PDF 识别效果。
|
||||
提升 PDF 解析准确性,需要 GPU 支持:
|
||||
|
||||
```bash
|
||||
docker compose up mineru --build # 启动 mineru 2.0
|
||||
# MinerU(需要 CUDA 12.4+)
|
||||
docker compose up mineru --build
|
||||
|
||||
docker compose up paddlex --build # 启动 PP-Structure-V3 服务
|
||||
# PP-Structure-V3(需要 CUDA 11.8+)
|
||||
docker compose up paddlex --build
|
||||
```
|
||||
|
||||
### 如果想要不依赖显卡启动本项目?
|
||||
### 服务端口说明
|
||||
|
||||
在 0.2.0 正式版的时候会考虑移除显卡启动设置,将现有的服务全部解耦剥离出去。 [#213](https://github.com/xerrors/Yuxi-Know/issues/213)
|
||||
| 端口 | 服务 | 说明 |
|
||||
|------|------|------|
|
||||
| 5173 | Web 前端 | 用户界面 |
|
||||
| 5050 | API 后端 | 核心服务 |
|
||||
| 7474/7687 | Neo4j | 图数据库 |
|
||||
| 9000/9001 | MinIO | 对象存储 |
|
||||
| 19530/9091 | Milvus | 向量数据库 |
|
||||
| 30000 | MinerU | PDF 解析(可选)|
|
||||
| 8080 | PaddleX | OCR 服务(可选)|
|
||||
| 8081 | vLLM | 本地推理(可选)|
|
||||
|
||||
只需要修改现在的 docker-compose.yml,删除现有的 deploy 部分代码,但是需要注意的是,这样的话,就无法使用本地模型 [#209](https://github.com/xerrors/Yuxi-Know/issues/209)。
|
||||
### 自定义模型供应商
|
||||
|
||||
```yml
|
||||
services:
|
||||
......
|
||||
# deploy:
|
||||
# resources:
|
||||
# reservations:
|
||||
# devices:
|
||||
# - driver: nvidia
|
||||
# device_ids: ['1']
|
||||
# capabilities: [gpu]
|
||||
在 [src/static/models.yaml](src/static/models.yaml) 中添加新的模型配置:
|
||||
|
||||
```yaml
|
||||
your_provider:
|
||||
name: "自定义供应商"
|
||||
default: "your-model-name"
|
||||
base_url: "https://api.your-provider.com/v1"
|
||||
env:
|
||||
- YOUR_API_KEY
|
||||
models:
|
||||
- your-model-name
|
||||
```
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### 安装和部署
|
||||
|
||||
**Q: 如何优雅拉取镜像?**
|
||||
```bash
|
||||
bash docker/pull_image.sh python:3.12
|
||||
```
|
||||
|
||||
|
||||
## 贡献者名单
|
||||
## 🤝 参与贡献
|
||||
|
||||
感谢以下贡献者的支持!
|
||||
感谢所有贡献者的支持!
|
||||
|
||||
<a href="https://github.com/xerrors/Yuxi-Know/contributors">
|
||||
<img src="https://contributors.nn.ci/api?repo=xerrors/Yuxi-Know" alt="贡献者名单">
|
||||
</a>
|
||||
|
||||
## Star History
|
||||
### 如何贡献
|
||||
|
||||
1. Fork 本项目
|
||||
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
|
||||
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
|
||||
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
||||
5. 创建 Pull Request
|
||||
|
||||
## 📊 Star History
|
||||
|
||||
[](https://star-history.com/#xerrors/Yuxi-Know)
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
**如果这个项目对您有帮助,请不要忘记给我们一个 ⭐️**
|
||||
|
||||
[报告问题](https://github.com/xerrors/Yuxi-Know/issues) | [功能请求](https://github.com/xerrors/Yuxi-Know/issues) | [讨论](https://github.com/xerrors/Yuxi-Know/discussions)
|
||||
|
||||
</div>
|
||||
|
||||
26
docs/Gemfile
26
docs/Gemfile
@ -1,26 +0,0 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "jekyll", "~> 4.3.2"
|
||||
# gem "just-the-docs", "~> 0.5.0"
|
||||
gem "minima", "~> 2.5"
|
||||
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-include-cache"
|
||||
gem "jekyll-paginate"
|
||||
gem "jekyll-sitemap"
|
||||
gem "jemoji"
|
||||
end
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library.
|
||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||
gem "tzinfo", ">= 1", "< 3"
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
|
||||
# Performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
|
||||
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||
# do not have a Java counterpart.
|
||||
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||
@ -1,26 +0,0 @@
|
||||
# remote_theme: just-the-docs/just-the-docs
|
||||
url: https://xerrors.github.io/Yuxi-Know
|
||||
baseurl: /Yuxi-Know
|
||||
title: 语析 - 基于大模型的知识库与知识图谱问答系统
|
||||
description: 语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex + VueJS + FastAPI + Neo4j 构建。
|
||||
search_enabled: true
|
||||
search_full_content: true
|
||||
aux_links:
|
||||
"在 GitHub 上查看":
|
||||
- "https://github.com/xerrors/Yuxi-Know"
|
||||
|
||||
# 启用中文支持
|
||||
plugins:
|
||||
- jekyll-include-cache
|
||||
- jekyll-paginate
|
||||
- jekyll-sitemap
|
||||
- jemoji
|
||||
|
||||
# 设置默认语言
|
||||
defaults:
|
||||
- scope:
|
||||
path: ""
|
||||
type: pages
|
||||
values:
|
||||
layout: home
|
||||
search_exclude: true
|
||||
142
docs/how-to.md
142
docs/how-to.md
@ -1,142 +0,0 @@
|
||||
### 如何优雅的拉取镜像?
|
||||
|
||||
使用 `bash docker/pull_image.sh python:3.12` 就可以。
|
||||
|
||||
### 如何配置本地大语言模型?
|
||||
|
||||
支持添加以 OpenAI 兼容模式运行的本地模型,可在 Web 设置中直接添加(适用于 vllm 和 Ollama 等)。
|
||||
|
||||
> [!NOTE]
|
||||
> 使用 docker 运行此项目时,ollama 或 vllm 需监听 `0.0.0.0`
|
||||
|
||||

|
||||
|
||||
### 如何配置本地向量模型与重排序模型
|
||||
|
||||
强烈建议测试阶段先使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 [src/static/models.yaml](src/static/models.yaml)。
|
||||
|
||||
对于**向量模型**和**重排序模型**,选择 `local` 前缀的模型会自动下载。如遇下载问题,请参考 [HF-Mirror](https://hf-mirror.com/) 配置。
|
||||
|
||||
要使用已下载的本地模型:
|
||||
|
||||
1. 在网页设置中添加映射,需要注意,如果是在 docker 里面前缀直接设置为 `/models`
|
||||
|
||||

|
||||
|
||||
2. 将文件夹映射到 docker 内部
|
||||
|
||||
```yml
|
||||
# docker-compose.yml
|
||||
|
||||
services:
|
||||
api:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/api.Dockerfile
|
||||
container_name: api-dev
|
||||
working_dir: /app
|
||||
volumes:
|
||||
- ./server:/app/server
|
||||
- ./src:/app/src
|
||||
- ./saves:/app/saves
|
||||
- ${MODEL_DIR}:/models <== 比如修改为 /hdd/models:models
|
||||
ports:
|
||||
|
||||
```
|
||||
|
||||
3. 重新启动项目
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
||||
注:添加本地向量模型由于在 docker 内外的路径差异很大,因此建议参考前面的路径映射之后,也在这里添加。
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### 如何配置 MinerU 抽取数据
|
||||
|
||||
在 PDF 数据处理中,可以选择配置 [MinerU](https://github.com/opendatalab/MinerU) 来实现更快速、更准确的 PDF 识别效果。
|
||||
|
||||
```yml
|
||||
mineru-api:
|
||||
build:
|
||||
context: scripts/mineru-api
|
||||
dockerfile: Dockerfile
|
||||
image: mineru-api:latest
|
||||
container_name: mineru-api
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
ports:
|
||||
- "5051:5051"
|
||||
networks:
|
||||
- app-network
|
||||
restart: unless-stopped
|
||||
command: python -m uvicorn app:app --host 0.0.0.0 --port 5051 --app-dir /app
|
||||
```
|
||||
|
||||
如果要添加代理的话,可以添加 build args
|
||||
|
||||
```yml
|
||||
mineru-api:
|
||||
build:
|
||||
context: scripts/mineru-api
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
http_proxy: http://宿主机IP:7890
|
||||
https_proxy: http://宿主机IP:7890
|
||||
```
|
||||
|
||||
### 如果想要不依赖显卡启动本项目?
|
||||
|
||||
只需要修改现在的 docker-compose.yml,删除现有的 deploy 部分代码,但是需要注意的是,这样的话,就无法使用本地模型 [#209](https://github.com/xerrors/Yuxi-Know/issues/209)。
|
||||
|
||||
|
||||
|
||||
```yml
|
||||
services:
|
||||
api:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/api.Dockerfile
|
||||
image: yuxi-api:0.1.0
|
||||
container_name: api-dev
|
||||
working_dir: /app
|
||||
volumes:
|
||||
- ./server:/app/server
|
||||
- ./src:/app/src
|
||||
- ./saves:/app/saves
|
||||
- ${MODEL_DIR:-./models}:/models # 使用默认值处理未定义的环境变量
|
||||
# deploy:
|
||||
# resources:
|
||||
# reservations:
|
||||
# devices:
|
||||
# - driver: nvidia
|
||||
# device_ids: ['1']
|
||||
# capabilities: [gpu]
|
||||
```
|
||||
136
docs/index.md
136
docs/index.md
@ -1,136 +0,0 @@
|
||||
---
|
||||
layout: default
|
||||
title: 语析 - 基于大模型的知识库与知识图谱问答系统
|
||||
nav_order: 1
|
||||
description: "语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex + VueJS + FastAPI + Neo4j 构建。"
|
||||
permalink: /
|
||||
---
|
||||
|
||||
# 语析 - 基于大模型的知识库与知识图谱问答系统
|
||||
|
||||
<div align="center">
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## 项目概述
|
||||
|
||||
语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex + VueJS + FastAPI + Neo4j 构建。
|
||||
|
||||
### 核心特点
|
||||
|
||||
- 🤖 **多模型支持**:适配 OpenAI、各大国内主流大模型平台,以及本地 vllm 部署
|
||||
- 📚 **灵活知识库**:支持 PDF、TXT、MD 等多种格式文档
|
||||
- 🕸️ **知识图谱集成**:基于 Neo4j 的知识图谱问答能力
|
||||
- 🚀 **简单配置**:只需配置对应服务平台的 `API_KEY` 即可使用
|
||||
|
||||

|
||||
|
||||
## 快速开始
|
||||
|
||||
### 环境配置
|
||||
|
||||
在启动前,您需要提供 API 服务商的 API_KEY,并放置在 `src/.env` 文件中(此文件项目中没有,需要自行参考 [src/.env.template](src/.env.template) 创建)。
|
||||
|
||||
默认使用硅基流动的服务,因此**必须**配置:
|
||||
|
||||
```env
|
||||
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
|
||||
```
|
||||
|
||||
### 启动服务
|
||||
|
||||
**开发环境启动**(源代码修改会自动更新):
|
||||
|
||||
```bash
|
||||
docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build
|
||||
```
|
||||
|
||||
> 添加 `-d` 参数可在后台运行
|
||||
|
||||
**生产环境部署**请使用:
|
||||
|
||||
```bash
|
||||
docker compose -f docker/docker-compose.yml --env-file src/.env up --build -d
|
||||
```
|
||||
|
||||
成功启动后,访问 [http://localhost:5173/](http://localhost:5173/) 即可使用系统。
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 多模态问答支持
|
||||
|
||||
- Deepseek-R1 等推理模型
|
||||
- 知识图谱检索
|
||||
- 知识库检索
|
||||
- 网页检索
|
||||
|
||||
### 知识库管理
|
||||
|
||||
支持多种格式的知识库文件:
|
||||
- PDF
|
||||
- Txt
|
||||
- Markdown
|
||||
- Docx
|
||||
|
||||
### 知识图谱集成
|
||||
|
||||
使用 Neo4j 作为知识图谱存储,支持:
|
||||
- 自定义知识图谱导入
|
||||
- 图谱可视化
|
||||
- 图谱检索
|
||||
|
||||
## 模型支持
|
||||
|
||||
### 对话模型
|
||||
|
||||
| 模型供应商 | 默认模型 | 配置项目 |
|
||||
| :--------------------- | :---------------------------------- | :--------------------------------------------- |
|
||||
| `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` |
|
||||
|
||||
### 向量模型与重排序模型
|
||||
|
||||
建议使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 [src/static/models.yaml](src/static/models.yaml)。
|
||||
|
||||
## 更新日志
|
||||
|
||||
- **2025.02.24** - 新增网页检索以及内容展示,需配置 `TAVILY_API_KEY`
|
||||
- **2025.02.23** - SiliconFlow 的 Rerank 和 Embedding model 支持,现默认使用 SiliconFlow
|
||||
- **2025.02.20** - DeepSeek-R1 支持,需配置 `DEEPSEEK_API_KEY` 或 `SILICONFLOW_API_KEY`
|
||||
- **2024.10.12** - 后端修改为 FastAPI,添加 Milvus-Standalone 独立部署
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 镜像下载问题
|
||||
|
||||
如无法直接下载相关镜像,可参考 [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
|
||||
```
|
||||
|
||||
## 贡献指南
|
||||
|
||||
欢迎提交 Issue 和 Pull Request 来帮助改进项目。
|
||||
|
||||
## 许可证
|
||||
|
||||
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
|
||||
@ -1,7 +1,8 @@
|
||||
MODEL_DIR=D:/Huggingface
|
||||
MODEL_DIR=models
|
||||
SAVE_DIR=saves
|
||||
|
||||
# 模型供应商
|
||||
SILICONFLOW_API_KEY=sk-aeoampticy******bpdsofstmoqnvsmbvql #* <<< 建议配置
|
||||
SILICONFLOW_API_KEY=sk-aeoampticy******bpdsofstmoqnvsmbvql # > <<< 建议配置
|
||||
OPENAI_API_KEY=sk-aslDB5rqOgK******q5K02ZEiRC9ER
|
||||
OPENAI_API_BASE=https://api.openai.com/v1
|
||||
ZHIPUAI_API_KEY=5f41e******71c7bac.UWkl******Sw5Lb
|
||||
@ -13,6 +14,3 @@ TOGETHER_API_KEY=tgp_v1_fPjW******irD6zesAn4
|
||||
|
||||
# 功能服务
|
||||
TAVILY_API_KEY=tvly-3gR4ind9******JMOxw3E2LG # <<< 配置网络搜索
|
||||
|
||||
# 知识图谱的模型,格式参考 models.yaml
|
||||
GRAPH_EMBED_MODEL_NAME=""
|
||||
Loading…
Reference in New Issue
Block a user