大家好,我是程序员寒山。
前面我们讲了知识图谱,今天我们来讲一下知识图谱如何集成到Dify。
之前很多粉丝遇到RAG处理数据不完整的问题,比如做一下数据统计之类的,那么这些问题真的的无解么?
比如:统计鲁菜的排名
今天我们给一个思路解决类似的问题,就是借助知识图谱的能力+RAG来实现。
一、为什么需要知识图谱?
在RAG应用开发中,知识图谱(Knowledge Graph)因其强大的关联关系表达能力,正在成为构建智能系统的一个有效补充。以菜谱场景为例,知识图谱可以提供多维度关联:菜品↔食材↔营养↔厨具↔烹饪方法,同时也可以提供各种维度的数据支持。
比如:统计鲁菜的排名,要实现这个功能,RAG没有办法直接实现,它的检索特点只能获取部分菜品,但是可以借助知识图谱的能力,获取全部菜谱信息,和RAG结合,达到最后的排名目标。
二、Neo4j 知识图谱库安装
这个安装方式挺多的,这里我以mac为例,使用docker部署安装:
docker run --publish=7474:7474 \
--publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
neo4j
命令运行完后,打开浏览器,访问http://localhost:7474,如果看到Neo4j的登录页面,说明安装成功,默认用户名和密码都是neo4j,第一次登录后需要修改密码。
三、Neo4j知识图谱的连接方式
在Dify的工作流设计中,我们通过HTTP接口与Neo4j交互,使用的查询语言是Cypher。
查询所有节点
curl -X POST \
http://localhost:7474/db/neo4j/tx/commit \
-H 'Authorization: Basic bmVvNGo6bmVvNGoxMjM=' \
-H 'Content-Type: application/json' \
-d '{
"statements": [{
"statement": "MATCH (n) RETURN n, labels(n) as labels",
"parameters": {}
}]
}'
四、Dify怎么连接知识图谱库
现在给大家演示如何一步一步的创建工作流,来和neo4j进行连接。
4.1 创建一个dify的工作流
首先我们创建一个工作流。
给开始节点添加一个问题输入框的字段,比如:给鲁菜做一个排名。
4.2 增加一个HTTP节点
通过这个节点查询所有的菜谱主体,通过http访问neo4j的数据库,header里面添加contentType和用户登录认证。
4.3 增加一个代码节点
通过代码节点来处理Http请求返回的内容,整理成一个文本,作为下一步关键词匹配的内容。代码会根据文本内容和问题,从问题中提取一个关键词,比如鲁菜,送给下一个Http节点。
4.4 再增加一个Http节点
再增加一个节点,查询知识图谱和问题有关的内容,使用上一步提取的关键查询,比如鲁菜。
4.5 增加一个LLM大模型的节点
把问题和http返回的内容一起送给大模型后,排名就出来了。
当然中间还可以引入本地知识库和知识图谱一起给大模型,我今天主要演示知识图谱的使用。
本期内容就这些,更多ai内容,请关注最新动态。