Go to file
Wenjie Zhang e2d0b17e5a feat(knowledge_base): 检索的内容以字典返回,同时包含 filepath 等 metadata
将知识库的异步查询方法aquery的返回类型从字符串更改为包含字典的列表,增强了查询结果的结构化。更新了Milvus和Chroma知识库的查询逻辑,确保返回的文档块包含内容、元数据和相似度分数。同时,修复了文件路径处理逻辑,确保文件名相对路径的正确性。
2025-08-01 17:04:37 +08:00
.github Delete .github/workflows/pages.yml 2025-07-22 04:14:49 +08:00
docker docs: 更新文档内容并添加相关图片 2025-07-28 16:26:01 +08:00
docs docs: update document 2025-08-01 16:59:03 +08:00
scripts feat(batch_upload): 添加批量文件转换为Markdown功能 2025-08-01 16:59:19 +08:00
server refactor(graph): 重构知识图谱查询和格式化逻辑 2025-07-30 10:50:06 +08:00
src feat(knowledge_base): 检索的内容以字典返回,同时包含 filepath 等 metadata 2025-08-01 17:04:37 +08:00
test chore: 更新配置文件和日志路径 2025-06-26 02:13:46 +08:00
web feat(knowledge graph): 改进智能体界面对于知识图谱检索结果的渲染稳定性和数据格式兼容性 2025-07-30 11:05:18 +08:00
.dockerignore add docker support for whole project 2024-09-11 01:09:35 +08:00
.gitignore feat: 更新知识库相关配置 2025-07-26 03:36:54 +08:00
.python-version chore: 更新 Python 版本和依赖项 2025-06-25 02:12:01 +08:00
docker-compose.yml fix(docker-compose): 修复当 node_modules 为空的时候,无法挂在 volumes 的问题 2025-07-28 19:07:58 +08:00
LICENSE update details 2025-02-25 21:36:00 +08:00
pyproject.toml feat(knowledge_base): 添加对CSV、Excel和JSON文件的支持 2025-07-29 00:29:41 +08:00
README.md Update README.md 2025-07-31 10:46:23 +08:00

语析 - 基于大模型的知识库与知识图谱问答系统

Vue.js FastAPI

📖 简介

语析是一个功能强大的智能问答平台,融合了 RAG 知识库与知识图谱技术,基于 LangGraph + Vue.js + FastAPI + LightRAG 架构构建。

核心特性

  • 🤖 多模型支持 - 适配主流大模型平台及本地部署vLLM、Ollama支持自定义智能体开发兼容 LangGraph 部署
  • 📚 灵活知识库 - 支持 LightRAG、Milvus、Chroma 等存储形式,配置 MinerU、PP-Structure-V3的文档解析引擎
  • 🕸️ 知识图谱 - 支持LightRAG的自动图谱构建以及自定义图谱问答可接入现有知识图谱
  • 👥 权限控制 - 支持超级管理员、管理员、普通用户三级权限体系

欢迎 Star

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

🚀 快速开始

系统要求

项目本身不需要显卡支持,可以运行在任何设备上。对于模型推理或者文档解析服务都可以和项目本身解耦,通过环境变量配置对应的服务即可。同时项目也提供了本地部署基于 vllm 的脚本。

一键启动

  1. 克隆项目

    git clone -b stable https://github.com/xerrors/Yuxi-Know.git
    cd Yuxi-Know
    

    如果想要使用 v0.2 预览版,可以使用分支:v0.2.0.preview

  2. 配置 API 密钥

    复制环境变量模板并编辑:

    cp src/.env.template src/.env
    

    必需配置(推荐使用硅基流动免费服务):

    SILICONFLOW_API_KEY=sk-270ea********8bfa97.e3XOMd****Q1Sk
    

    💡 免费获取 SiliconFlow API Key(注册即送 14 元额度) 💡 免费获取 智谱 API Key(注册即送 2000 万Tokens

  3. 启动服务

    docker compose up --build
    

    添加 -d 参数可后台运行。启动完成后访问:http://localhost:5173

  4. 停止服务

    docker compose down
    

故障排除

如果 docker 已经正常启动,则使用 docker logs api-dev -f 查看后端日志。

Docker 镜像拉取失败

如果拉取镜像失败,可以尝试手动拉取:

  bash docker/pull_image.sh python:3.11-slim  # 替换后面的 repo_name 即可

如果依然存在镜像拉取问题,可以现在另外一个可访问 Docker 的设备上执行拉取镜像后,使用下面的脚本保存为 tar 文件,再拷贝到开发设备使用。

# 保存镜像,会生成 docker_images_xxx.tar
bash docker/save_docker_images.sh # Linux 或 macOS
powershell -ExecutionPolicy Bypass -File docker/save_docker_images.ps1 # Windows PowerShell

# 拷贝 docker_images_xxx.tar 文件到开发设备
scp docker_images_xxx.tar <user>@<dev_host>:<path_to_save>

# 在开发设备上执行
docker load -i docker_images_xxx.tar
Milvus 启动失败,执行 `docker compose up milvus -d && docker restart api-dev`

🤖 模型配置

对话模型

支持多种 API 服务商,配置对应的 API_KEY 即可使用:

服务商 推荐模型 环境变量 备注
硅基流动 Qwen2.5-7B-Instruct SILICONFLOW_API_KEY 🆓 免费,默认
OpenAI gpt-4o OPENAI_API_KEY
DeepSeek deepseek-chat DEEPSEEK_API_KEY
OpenRouter openrouter OPENROUTER_API_KEY
智谱清言 glm-4-flash ZHIPUAI_API_KEY
阿里云百炼 qwen-max-latest DASHSCOPE_API_KEY
自定义模型供应商

src/static/models.yaml 中添加新的模型配置,然后在 .env 文件中添加对应的环境变量,最后重新部署项目即可。

示例

custom-provider-name-here:
  name: custom-provider-name-here
  default: custom-model-name-here
  base_url: "https://api.your-provider.com/v1"
  env:
    - CUSTOM_API_KEY_ENV_NAME  # e.g. OPENAI_API_KEY
  models:
    - supported-model-name-here

OpenAI 兼容模型

项目理论上兼容任何 OpenAI 兼容的模型,包括但不限于 vLLM、Ollama 或者其他 API 中转或者代理服务。在 Web 界面的"设置"中添加本地模型地址。

📚 功能详解

知识库管理

现在支持的知识库类型包括 ChromaMilvusLightRAGLightRAG 是轻量级 GraphRAG方法。

knowledge_bases

知识图谱

在 v0.2 版本中,项目支持了基于 LightRAG 的知识图谱构建方法。需要在知识库中创建一个基于 LightRAG 的知识库,然后上传文档。构建的知识图谱会自动导入到 Neo4j 中,并使用不同的 label 做区分。需要说明的是,基于 LightRAG 的知识库,可以在知识库详情中可视化,但是不能在侧边栏的图谱中检索,知识图谱检索工具也不支持基于 LightRAG 的知识库进行检索。基于 LightRAG 方法构建的图谱的查询,需要使用对应的知识库作为查询工具。

知识库可视化 Neo4J管理端
知识库可视化 Neo4J管理端

除此之外,也支持将已有的知识图谱按照下面的格式导入 Neo4j 中,上传后,节点会自动添加 UploadEntity 标签,关系会自动添加 Relation 标签。可以通过 name 属性访问实体的名称,使用 type 属性访问边的名称。默认账户密码是neo4j / 0123456789

数据格式:支持 JSONL 格式导入

{"h": "北京", "t": "中国", "r": "首都"}
{"h": "上海", "t": "中国", "r": "直辖市"}

此外,也可以通过修改 docker-compose.yml 中的 NEO4J_URI 配置来接入已有的 Neo4j 实例,但是最好确保每个节点都有 Entity 标签,否则会影响到图的检索与构建。

🔧 高级配置

OCR 服务(可选)

对于基础的 OCR 服务RapidOCR onnx 版本),可以使用 SWHL/RapidOCR 的 onnx 版本,但是需要提前将模型下载到 $MODEL_DIR 目录下。

huggingface-cli download SWHL/RapidOCR --local-dir ${MODEL_DIR:-./models}/SWHL/RapidOCR

如果提示 [Errno 13] Permission denied 则需要使用 sudo 修改权限之后再执行

提升 PDF 解析准确性,可以选择使用 MinerU 或 PP-Structure-V3 服务,但是需要 GPU 支持。

启用MinerU服务:

# MinerU需要 CUDA 12.4+
docker compose up mineru --build

启用PP-Structure-V3服务,配置文件可以在 docker/PP-StructureV3.yaml 中修改。

# PP-Structure-V3需要 CUDA 11.8+
docker compose up paddlex --build

服务端口说明

端口 服务 说明
5173 Web 前端 用户界面
5050 API 后端 核心服务
7474/7687 Neo4j 图数据库
9000/9001 MinIO 对象存储
19530/9091 Milvus 向量数据库
30000 MinerU PDF 解析(可选)
8080 PaddleX OCR 服务(可选)
8081 vLLM 本地推理(可选)

常见问题

暂无

🤝 参与贡献

感谢所有贡献者的支持!

贡献者名单

如何贡献

  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

Star History Chart

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。


如果这个项目对您有帮助,请不要忘记给我们一个

报告问题 | 功能请求 | 讨论