ForcePilot/README.md

234 lines
7.0 KiB
Markdown
Raw Normal View History

2025-03-05 13:02:47 +08:00
<h1 align="center">语析 - 基于大模型的知识库与知识图谱问答系统</h1>
2025-07-21 19:48:15 +08:00
2024-11-15 00:15:15 +08:00
<div align="center">
2024-11-23 11:35:01 +08:00
![](https://img.shields.io/badge/Docker-2496ED?style=flat&logo=docker&logoColor=ffffff)
2025-02-28 14:39:03 +08:00
![Vue.js](https://img.shields.io/badge/vuejs-%2335495e.svg?style=flat&logo=vuedotjs&logoColor=%234FC08D)
2024-11-15 00:15:15 +08:00
![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=flat&logo=fastapi)
![](https://img.shields.io/github/issues/xerrors/Yuxi-Know?color=F48D73)
2024-11-23 11:35:01 +08:00
![](https://img.shields.io/github/license/bitcookies/winrar-keygen.svg?logo=github)
2025-02-20 12:14:39 +08:00
![](https://img.shields.io/github/stars/xerrors/Yuxi-Know)
2024-11-15 00:15:15 +08:00
</div>
2024-09-26 10:57:20 +08:00
2025-07-21 19:48:15 +08:00
## 📖 简介
2025-02-20 12:14:39 +08:00
2025-07-21 19:48:15 +08:00
语析是一个功能强大的智能问答平台,融合了 RAG 知识库与知识图谱技术,基于 LangGraph + Vue.js + FastAPI + LightRAG 架构构建。
2025-02-20 12:14:39 +08:00
2025-07-21 19:48:15 +08:00
### ✨ 核心特性
2025-02-24 19:41:44 +08:00
2025-07-21 19:48:15 +08:00
- 🤖 **多模型支持** - 兼容 OpenAI、国内主流大模型平台及本地部署vLLM、Ollama
- 📚 **灵活知识库** - 支持 PDF、TXT、MD、Docx 等格式,支持 URL 导入和联网搜索
- 🤖 **智能体扩展** - 支持自定义智能体开发,兼容 LangGraph 部署
- 🕸️ **知识图谱** - 基于 Neo4j 的图谱问答,可接入现有知识图谱
- 👥 **权限控制** - 支持超级管理员、管理员、普通用户三级权限体系
2025-05-17 10:43:53 +08:00
2025-05-20 01:13:48 +08:00
![欢迎 Star](https://github.com/user-attachments/assets/a9ea624a-7b95-4bc1-a3c7-bfec6c587b5c)
2025-05-25 21:55:02 +08:00
https://github.com/user-attachments/assets/15f7f315-003d-4e41-a260-739c2529f824
2025-05-20 01:13:48 +08:00
2024-10-14 22:22:35 +08:00
2025-05-15 23:17:22 +08:00
## 🚀 快速开始
2025-07-21 19:48:15 +08:00
### 系统要求
2025-06-29 14:18:40 +08:00
项目本身不需要显卡支持,可以运行在任何设备上。对于模型推理或者文档解析服务都可以和项目本身解耦,通过环境变量配置对应的服务即可。同时项目也提供了本地部署基于 vllm 的脚本。
2025-07-21 19:48:15 +08:00
- Docker 和 Docker Compose
- 2GB+ 可用内存
- 可选CUDA 支持的 GPU用于 OCR 服务)
2025-06-29 14:18:40 +08:00
2025-07-21 19:48:15 +08:00
### 一键启动
2025-07-21 19:48:15 +08:00
1. **克隆项目**
```bash
git clone -b stable https://github.com/xerrors/Yuxi-Know.git
cd Yuxi-Know
```
2025-02-28 14:39:03 +08:00
2025-07-21 19:48:15 +08:00
2. **配置 API 密钥**
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
复制环境变量模板并编辑:
```bash
cp src/.env.template src/.env
```
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
**必需配置**(推荐使用硅基流动免费服务):
```env
SILICONFLOW_API_KEY=sk-270ea********8bfa97.e3XOMd****Q1Sk
```
> 💡 [免费获取 SiliconFlow API Key](https://cloud.siliconflow.cn/i/Eo5yTHGJ)(注册即送 14 元额度)
2025-03-17 18:52:40 +08:00
2025-07-21 19:48:15 +08:00
3. **启动服务**
```bash
docker compose up --build
```
2025-02-28 14:39:03 +08:00
2025-07-21 19:48:15 +08:00
添加 `-d` 参数可后台运行。启动完成后访问:[http://localhost:5173](http://localhost:5173)
2024-10-14 16:51:20 +08:00
2025-07-21 19:48:15 +08:00
4. **停止服务**
```bash
docker compose down
```
2025-07-21 19:48:15 +08:00
### 故障排除
2024-10-14 16:51:20 +08:00
- **镜像拉取失败**:如果拉取镜像失败,可以尝试手动拉取:
```bash
bash docker/pull_image.sh python:3.13-slim # 替换后面的 repo_name 即可
```
2025-07-21 19:48:15 +08:00
- **内存不足**:如果 Milvus 启动失败,执行 `docker compose up milvus -d && docker restart api-dev`
- **查看日志**`docker logs api-dev -f`
2024-10-14 16:51:20 +08:00
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
## 🤖 模型配置
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
### 对话模型
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
支持多种 API 服务商,配置对应的 `API_KEY` 即可使用:
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
| 服务商 | 推荐模型 | 环境变量 | 备注 |
|--------|---------|----------|------|
| 硅基流动 | `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` | |
2025-02-28 14:39:03 +08:00
2025-07-21 19:48:15 +08:00
**完整配置示例:**
```env
# 基础配置(必需)
SILICONFLOW_API_KEY=sk-your-key-here
2025-02-25 21:26:37 +08:00
2025-07-21 19:48:15 +08:00
# 可选配置
OPENAI_API_KEY=sk-your-openai-key
DEEPSEEK_API_KEY=sk-your-deepseek-key
TAVILY_API_KEY=your-tavily-key # 联网搜索功能
2025-02-25 21:26:37 +08:00
```
### OpenAI 兼容模型
项目理论上兼容任何 OpenAI 兼容的模型,包括但不限于:
- vLLM
- Ollama
- 其他 API 中转或者代理服务
在 Web 界面的"设置"中添加本地模型地址。
![本地模型配置](./docs/images/custom_models.png)
2025-07-21 19:48:15 +08:00
## 📚 功能详解
2025-07-21 19:48:15 +08:00
### 知识库管理
2025-07-21 19:48:15 +08:00
- **多格式支持**PDF、TXT、Markdown、Docx、Excel 等
- **多种导入方式**本地上传、URL 导入、批量导入
- **智能分块**:自动优化文档分割策略
- **向量检索**:基于 Milvus 的高效相似度搜索
2025-07-21 19:48:15 +08:00
### 知识图谱
2025-07-21 19:48:15 +08:00
使用 Neo4j 构建知识图谱问答能力:
2025-07-21 19:48:15 +08:00
1. **数据格式**:支持 JSONL 格式导入
```jsonl
{"h": "北京", "t": "中国", "r": "首都"}
{"h": "上海", "t": "中国", "r": "直辖市"}
```
2025-03-04 13:54:39 +08:00
2025-07-21 19:48:15 +08:00
2. **图谱访问**
- Web 界面:[http://localhost:7474](http://localhost:7474)
- 默认账户:`neo4j` / `0123456789`
2025-05-15 23:17:22 +08:00
2025-07-21 19:48:15 +08:00
3. **现有图谱接入**:修改 `docker-compose.yml` 中的 `NEO4J_URI` 配置
2025-05-15 23:17:22 +08:00
2025-07-21 19:48:15 +08:00
## 🔧 高级配置
2025-02-23 16:37:06 +08:00
2025-07-21 19:48:15 +08:00
### OCR 服务(可选)
2025-02-28 14:39:03 +08:00
对于基础的 OCR 服务RapidOCR onnx 版本),可以使用 SWHL/RapidOCR 的 onnx 版本,但是需要提前将模型下载到 `$MODEL_DIR` 目录下。
```bash
huggingface-cli download SWHL/RapidOCR --local-dir ${MODEL_DIR:-./models}/SWHL/RapidOCR
```
*如果提示 `[Errno 13] Permission denied` 则需要使用 sudo 修改权限之后再执行*
提升 PDF 解析准确性,可以选择使用 MinerU 或 PP-Structure-V3 服务,但是需要 GPU 支持:
2025-02-28 14:39:03 +08:00
2025-07-21 19:48:15 +08:00
```bash
# MinerU需要 CUDA 12.4+
docker compose up mineru --build
2025-02-28 14:39:03 +08:00
2025-07-21 19:48:15 +08:00
# PP-Structure-V3需要 CUDA 11.8+
docker compose up paddlex --build
2025-02-28 14:39:03 +08:00
```
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
### 服务端口说明
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
| 端口 | 服务 | 说明 |
|------|------|------|
| 5173 | Web 前端 | 用户界面 |
| 5050 | API 后端 | 核心服务 |
| 7474/7687 | Neo4j | 图数据库 |
| 9000/9001 | MinIO | 对象存储 |
| 19530/9091 | Milvus | 向量数据库 |
| 30000 | MinerU | PDF 解析(可选)|
| 8080 | PaddleX | OCR 服务(可选)|
| 8081 | vLLM | 本地推理(可选)|
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
### 自定义模型供应商
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
在 [src/static/models.yaml](src/static/models.yaml) 中添加新的模型配置:
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
```yaml
your_provider:
name: "自定义供应商"
default: "your-model-name"
base_url: "https://api.your-provider.com/v1"
env:
- YOUR_API_KEY
models:
- your-model-name
```
2024-11-14 20:07:49 +08:00
2025-07-21 19:48:15 +08:00
## ❓ 常见问题
暂无
2025-07-21 19:48:15 +08:00
## 🤝 参与贡献
2025-07-21 19:48:15 +08:00
感谢所有贡献者的支持!
2025-07-21 19:48:15 +08:00
<a href="https://github.com/xerrors/Yuxi-Know/contributors">
<img src="https://contributors.nn.ci/api?repo=xerrors/Yuxi-Know" alt="贡献者名单">
</a>
2025-07-21 19:48:15 +08:00
### 如何贡献
2025-07-21 19:48:15 +08:00
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
2025-07-21 19:48:15 +08:00
## 📊 Star History
2025-07-21 19:48:15 +08:00
[![Star History Chart](https://api.star-history.com/svg?repos=xerrors/Yuxi-Know)](https://star-history.com/#xerrors/Yuxi-Know)
2025-07-21 19:48:15 +08:00
## 📄 许可证
2025-07-21 19:48:15 +08:00
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
2025-07-21 19:48:15 +08:00
---
2025-03-30 22:12:30 +08:00
2025-07-21 19:48:15 +08:00
<div align="center">
2025-03-30 22:12:30 +08:00
2025-07-21 19:48:15 +08:00
**如果这个项目对您有帮助,请不要忘记给我们一个 ⭐️**
2025-03-30 22:12:30 +08:00
2025-07-21 19:48:15 +08:00
[报告问题](https://github.com/xerrors/Yuxi-Know/issues) | [功能请求](https://github.com/xerrors/Yuxi-Know/issues) | [讨论](https://github.com/xerrors/Yuxi-Know/discussions)
2025-03-05 12:56:05 +08:00
2025-07-21 19:48:15 +08:00
</div>