[English | 简体中文]
RagPanel是一个开源RAG快速部署项目,仅用几行代码就可以快速部署数据库和RAG平台,可通过可视化Web UI进行添加文件、检索查询、删除检索结果、删除已添加文件、RAG聊天等操作,并支持通过API调用完成这些操作,目前已集成了Naive RAG、Graph RAG等RAG方式。
- 部署简便,仅需几行命令就能快速完成
- 提供可视化Web UI,零代码构建知识库
- 参数可在Web UI调节,快速调试
- 提供添加文档、检索数据库、修改数据库等调试功能
- RAG各个流程都可调节
- RAG应用模板可自由修改
本项目需要准备一个聊天模型和一个嵌入模型。项目内部仅支持OpenAI形式的API调用,因而如果您想要使用其他形式的API或开源模型,可以参考模型部署部分来部署模型。
git clone https://github.com/the-seeds/RagPanel
cd RagPanel
conda create -n ragpanel python=3.10
conda activate ragpanel
您需要启动一个键值对数据库和一个向量数据库。我们推荐使用docker部署,并在docker文件夹下提供了docker compose文件。以redis
为例,您可以运行以下命令启动redis
:
cd docker/redis
docker-compose up -d
目前支持的键值数据库: redis
, elasticsearch
目前支持的向量数据库: chroma
, milvus
Note
chroma
仅需根据后续步骤安装python依赖即可,无需使用docker部署。因而,您也可以通过源码安装redis,来不使用docker完成redis
+chroma
的启动。
您需要根据启动的数据库服务安装本项目和依赖项,以 redis
+chroma
为例:
pip install -e ".[redis, chroma]"
您也可以在使用pip install -e .
安装本项目后,自行通过pip安装依赖项,您可以参考依赖项表:
数据库 | 依赖项 |
---|---|
redis | redis |
elasticsearch | elasticsearch[async] |
chroma | chromadb |
milvus | pymilvus |
运行 ragpanel-cli --action webui
来启动Web UI,并根据提示选则英文en
或中文zh
。可看到如下界面:
我们的GraphRAG实现方式如图所示。首先我们用大模型抽取文档中的实体和关系,并合并相似度过高者,存入图数据库后得到知识图谱。之后我们使用Leiden算法来对知识图谱进行聚类操作,得到图社区。最后我们使用大模型对每个社区生成社区报告,并存入键值数据库。
在查询时,我们首先在向量数据库中检索最相关的若干实体,并在图数据库中查询到实体所属社区id,从而在键值数据库检索到社区报告,作为检索结果。
在您完成了快速开始部分后,您只需要完成图数据库的部署即可使用GraphRAG。
目前图数据库仅支持neo4j
,您可以通过以下代码使用docker部署neo4j
并安装依赖:
mkdir neo4j && cd neo4j
docker run -it --rm \
--publish=7474:7474 --publish=7687:7687 \
--env NEO4J_AUTH=none \
--env NEO4J_PLUGINS='["apoc","graph-data-science"]' \
--env NEO4J_dbms_security_procedures_unrestricted=gds.*,apoc.*\
--env NEO4J_dbms_security_procedures_allowlist=gds.*,apoc.*\
-v ./plugins:/plugins\
-v ./data:/data\
neo4j:5.11.0
pip install neo4j
至此,您就可以在Web UI中将图数据库选项由None
切换至neo4j
,并在工具环境
-检索
中将检索方式切换为graph
,以启动Graph RAG。
推荐使用 One API 接入,您可以查看官方仓库获取更多部署教程,以下给出一种快速部署方案:
首先使用docker部署One API:
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
之后访问http://localhost:3000/ 并登录进行配置。初始账号用户名为 root,密码为 123456。在渠道
页面中添加您的闭源模型 API Key,之后在令牌
页面中新增访问令牌。后续就可以使用新增的令牌访问 One API 了,使用方式与 OpenAI API 一致。
推荐使用 imitater 接入,以下给出一种快速部署方案:
首先拉取仓库并安装:
git clone https://github.com/the-seeds/imitater.git
cd imitater
conda create -n imitater python=3.10
conda activate imitater
pip install -e .
修改imitater
项目的样例配置文件config/example.yaml
,然后运行该项目:
imitater -c config/example.yaml
创建如下的.env
和 config.yaml
文件(如果您使用过Web UI,则可点击其中的应用并保存
自动生成.env
):
# .env
# imitater or openai
OPENAI_BASE_URL=http://localhost:8000/v1
OPENAI_API_KEY=0
# models
DEFAULT_EMBED_MODEL=text-embedding-ada-002
DEFAULT_CHAT_MODEL=gpt-3.5-turbo
HF_TOKENIZER_PATH=01-ai/Yi-6B-Chat
# text splitter
DEFAULT_CHUNK_SIZE=300
DEFAULT_CHUNK_OVERLAP=100
# retrieve
RAG_METHOD=naive
# storages
STORAGE=redis
SEARCH_TARGET=content
REDIS_URI=redis://localhost:6379
ELASTICSEARCH_URI=http://localhost:9001
# graph storage
GRAPH_STORAGE=neo4j
NEO4J_URI=bolt://localhost:7687
CLUSTER_LEVEL=3
# vectorstore
VECTORSTORE=chroma
CHROMA_PATH=./chroma
MILVUS_URI=http://localhost:19530
MILVUS_TOKEN=0
# config.yaml
database:
collection: init
build:
folder: ./inputs
launch:
host: 127.0.0.1
port: 8080
dump:
folder: ./chat_history
假设您已经创建完 .env和 config.yaml,并且启动了数据库服务,您可以参考examples/api文件夹下的README来启动和使用api服务。