一个结合了知识图谱和RAG的多智能体对话框架,可以从不同社交平台的评论中提取并构建知识图谱数据库,让它们以各平台代表性的观点和表达方式,围绕一个话题展开辩论。
API key配置文件是config.py
。该程序基于moonshot-v1模型实现,需要在配置文件中填入从kimi开放平台申请的API key以正常运行。如果需要更换其他模型服务,需要同时修改API_BASE_URL
和程序中相应调用大模型的部分(模型名称、特殊参数等)
知识图谱类的主文件是knowledgeGraph.py
,具体实现主文件接口的组件类分别为graph_entity.py
,graph_search.py
,graph_storage.py
,graph_visualization.py
。用于RAG的嵌入模型配置文件为embedding_model.py
。
使用到知识图谱的两个工具类是knowledge_retriever.py
和knowledgeGraphExtractor.py
,分别用于信息检索和知识图谱提取。
平台大战对话的主程序是platform_war.py
,相关UI和Agent类分别为platform_war_UI.py
和chat.py
。
由于向量数据处理部分使用的faiss-gpu
暂时只支持CUDA加速,所以本项目目前只支持Windows/Linux系统运行。
创建conda环境
conda create -n platform_war python=3.11.7
conda activate platform_war
启用gpu加速(可选)
安装电脑显卡版本匹配的CUDA和PyTorch, 例(具体版本请按电脑配置修改):
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
然后用以下命令安装FAISS的gpu版本
conda install -c conda-forge faiss-gpu
项目目录下安装依赖(必选)
pip install -r requirements.txt
如果前一步没有安装CUDA,需要将embedding_model.py
中的
model_kwargs={"device": "cuda"}
修改为
model_kwargs={"device": "cpu"}
配置API(必选)
该程序基于moonshot-v1模型实现,需要在配置文件中填入从kimi开放平台申请的API key以正常运行。API key配置文件是config.py
。
knowledgeGraphExtractor.py
可用于从指定格式的json文件中自动提取知识图谱。
在项目目录下新建data文件夹,放入需要提取的数据文件,命名为result.json
(或者可以修改knowledgeGraphExtractor.py
中的路径以使用其他文件名),然后运行knowledgeGraphExtractor.py
。
result.json
需要遵循以下json格式:
{
"item_id": { // 项目ID作为key
"title": string, // 标题
"clusters": [ // 评论簇数组
{
"comments": [ // 评论内容数组
string,
...
]
}
]
},
"item_id": {
"title": string,
"clusters": [
{
"comments": [
string,
...
]
}
]
},
...
}
从原始数据提取完知识图谱后,会在项目目录下生成相应的知识图谱数据库。
可以将platform_war.py
、platform_war_UI.py
和chat.py
中的PLATFORM_NAME
和PLATFORM_KNOWLEDGE_BASE
修改为对应的数据库名称和路径。
运行platform_war.py
以开始平台辩论。
如果想复现项目视频中的效果,需要单独下载三个平台的向量数据库。
百度网盘下载链接:
https://pan.baidu.com/s/1Ki0Sym9dmM76e6ghR6P8jQ?pwd=j3ih 提取码: j3ih
谷歌云盘下载链接:
https://drive.google.com/drive/folders/1kaXPSTjVaI1LP9lPtu8XhCnqjgWVlajY?usp=sharing
使用方法:
解压缩,并将bilibili_knowledge_base
,weibo_knowledge_base
,zhihu_knowledge_base
三个文件放在项目目录下。
运行platform_war.py
以开始平台辩论。
- UI缺乏自适应,在不同尺寸的窗口中可能存在显示不全/错位的问题。
- 对话轮次超出屏幕范围后,新对话会与旧对话互相覆盖。
微软GraphRAG项目 https://github.com/microsoft/graphrag