本文用于记录和描述如何在本地通过配置dify+firecral+Ollama的方式来实现RAG知识库chatbot。
整个配置流程在macos15.5下完成,其他操作系统还请依据实际情况更改对应内容。
git clone git@github.com:langgenius/dify.git
cd dify/docker cp .env.example .env
我们可以对dify参数进行调整也可以直接使用默认参数
首次登陆后需要配置模型提供商,点击右上角头像图标,设置
选择模型供应商,选择你需要使用的模型,我这里配置使用ollama
选择添加模型,配置本地地址,确保你的ollama已经运行并且可以被访问。
curl http://192.168.31.157:11434/v1/models
使用firecrawl还需要安装nodejs和pnpm为依赖,还请提前安装
git clone git@github.com:mendableai/firecrawl.gi
cd firecrawlcp apps/api/.env.example ./.envvi .env
USE_DB_AUTHENTICATION=false
TEST_API_KEY=xxxxx #记录该key后续配置会用上
firecrawl运行成功 打开本地3002/test可以看到hello,world字样
选择同步自web站点,我们以https://docs.dify.ai/zh-hans/guides为例子
限制数量设置为50,深度为3,代表让firecrawl抓取网页上最先出现的10个内容并且抓取这50个链接下的3层子目录
选择混合检索,采用权重设置(本文不涉及RAG精度优化,暂不使用rerank模型)点击保存并处理。
我们可以看到知识库已经完成了创建并在embedding
embedding完成后我可以点击前往文档查看结果
可以看到利用firecrawl抓取的网页embedding所生成的文档
在给出的模板基础上修改,在开始和llm中间增加知识检索节点
修改温度(默认0.7)降到较低的值,使其回答更为稳妥。
在system prompt中输入 根据下面的检索结果回答用户问题 调用sys.query变量 并调用上下文
我们选择预览,输入一个问题
如何配置embedding模型?
点击运行,可以看到单独的chatbot页面,我们再次提问
当然我们也可以选择把chatbot嵌入到网站中,可以在发布下获取对应的代码。