支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【避坑血泪史】80次调试!我用Dify爬虫搭建个人知识库全记录

发布日期:2025-04-03 08:58:41 浏览次数: 1584 作者:5ycode
推荐语

通过Dify爬虫搭建个人知识库的实战经验分享,详细记录了80次调试的血泪史,为你提供避坑指南。

核心内容:
1. 搭建个人知识库的动机与准备工作
2. 详细步骤拆解:从获取接口到存入知识库
3. 调试过程中遇到的问题与解决方案

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

之前在写ragflow爬虫组件的时候,我就想想通过爬虫组件采集信息,打造个人的私人知识库。我翻了下ragflow的源码,发现api必须上传文档,不能直接上传文本,周日在家想起这件事,我想看看dify的能否实现。

然后我看了知识库有对应的接口,就开始尝试了下,然后入坑了。调了80多次才调好。

以前写代码不正确先自我怀疑,用dify和ragflow一定不能有这种思维,一定要想这是bug。

准备工作 

创建空白知识库

获取数据库的datasetid

拿到知识库的Id 03389f92-50f4-4ece-8618-df3e0a081aaa

申请密钥

在知识库里申请秘钥,

  • 通过1点击知识库,
  • 点击2 API,这个位置也是api的文档
  • 点击3 API密钥

在知识库里申请密钥,这个密钥要好好的保存,是操作所有知识库的,不是某一个。

创建密钥或者直接通过2复制已有的密钥。

比如我的密钥:dataset-H8YPPbtW5kJLzv546hpFtvnA

postman验证(可选)

建议先用postman验证好。验证成功以后,我们点击位置1的图标,点击位置2把curl命令复制下来。

获取接口

在知识库的api文档里,第一个接口就是我们这次要用的接口。

整体流程 

最终流程如图。

我本来是想通过采集以后,自定义父子分段实现的,但是这个入坑了。

详细步骤拆解 

我们要实现采集并入库

  • 1 要知道爬取的url,url可以手工输入,也可以搜索以后提取
  • 2 采集完以后如何分段存入知识库

开始节点设置

添加两个变量

  • url 输入链接
  • datesetId 我们前面获取的知识库的id

网页爬虫

网页爬虫是dify的一个工具,需要在市场里下载安装。直接引用输入的url即可。

微信公众号爬取是乱码,这个大家不用试了

提取爬取标题和内容

爬虫组件获取数据接口如上,我们主要是要把text中的内容提取出来。

  • 添加一个参数提取器
  • 1的位置设置模型,用v3或者其他的模型就行,别用r1
  • 输入变量为爬取的结果
  • 通过3添加提取参数
  • 通过4添加提取指令

添加判断组件

爬取成功,我们就存入知识库,否则则直接结束。

存入知识库

  • 通过位置1把在postman 验证通过的curl命令复制过来。这里需要注意下,接口请求方式是POST,自动填充的是GET
  • 2的位置,把知识库id,改成变量
  • 34的位置,把提取到的标题和内容设置进去

结束

把请求结果输出。

验证 

我们拿dify官方文档的链接试一下

https://docs.dify.ai/zh-hans/guides/knowledge-base/retrieval-test-and-citation

  • 点击右上角的1运行,
  • 填入链接和知识库的标识
  • 点击3运行追踪查看是否成功。

在知识库中我们可以看到存进去的文档。点开可以查看分段结果。

后记 

看着很简单是吧,我被折磨快2天。这里需要注意一点,用本机的ip请求,如果一台机器上,可以用docker内网。

坑一

dify的接口文档和实际使用有出入,这个折腾了好久,主要是我想用父子分段,想自定义分段模式

在父子分段里是hierarchical,跟踪前端页面找到的。

父子分段上传成功以后,也不会自动分段,再点击分段,报错,暂时还没有解决。

坑二  failed to run: Failed to parse JSON:

如果爬取的文章内容里面各种格式,又是markdown,又是代码的,很容易出现这个问题,而且你在postman上验证通过,在这里也通不过。需要写代码自己清洗,但是清洗就是一个无底洞,不要尝试。或者是你自己手写json,多一个或少一个标点符号。

坑三  400 The browser (or proxy) sent a request that this server could not understand.

调试的时候,经常出现400,报错信息为The browser (or proxy) sent a request that this server could not understand,一般情况下都是你的json问题。从postman复制概率就很小

405

405 Method Not Allowed,你把请求方式设置错了,本来是post,设置成了get,就报

我把工作流扔网盘里,大家有需要可以下载。群友分享的几十个dify工作流。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询