返回随笔AI & Python
完成ENGINEERING NOTE

RAG & RAGFlow知识库构建

以咖啡屋客服场景解释 RAG 如何减少上下文成本,并记录文档切片、向量检索以及使用 RAGFlow 构建知识库的过程。

AI AgentRAG

设想一个场景,咖啡屋的老板让你作为客服回答客户的问题,你非常机灵地将可能遇到的问题做成了一份文档,并编写了一个使用DeepSeek接口的AI对话软件。你在每轮对话开始时都将文件内容作为上下文上传了上去,这样当客户问及有关问题时,AI会根据文件内容做出准确的回答。一个星期过去了,咖啡屋生意火爆,咨询菜单等问题的人非常多,你突然发现,老板给你的200块token费用竟然全部用光了!老板非常生气,说要给你扣工资。就在这时候,你发现了另一项技术:RAG。

什么是RAG

RAG全称Retrieval-Augmented Generation,译为检索增强生成。它将文件通过嵌入模型(Embedding模型)切片并转换成向量,内容相近的两段文字在向量空间中会非常接近,这样就可以通过检索将获得文件中有关的内容,而不用将整个文件上传到LLM中。这样的向量空间称为知识库,LLM可以通过向知识库检索获得所需要的知识。

RAGFlow

RagFlow是一款集成了Rag、知识库和AI Agent开发的软件,它使用Docker部署。可以很方便地部署在本地并为后端暴露端口。

RAGFlow安装

官方文档如下:https://github.com/infiniflow/ragflow/blob/main/README_zh.md 简易的安装方法如下:

  • 克隆仓库

git clone https://github.com/infiniflow/ragflow.git ```

  • 修改配置 进入docker文件夹,打开其中的.env文件,将其中的配置修改为如下:

注释掉这一行

RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2-slim

取消注释这一行

RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.2 ``` ragflow默认下载的版本是slim版本,这个版本是没有embedding模型的。

  • 启动项目 在docker文件夹下运行

使用cpu运行模型

docker compose -f docker-compose.yml up -d

使用gpu运行模型

docker compose -f docker-compose-gpu.yml up -d 然后应该就能在Docker Desktop中看到容器的运行情况了。如果出现以下界面则说明运行成功: plain text ____ ___ ______ ______ __ / __ \ / | / // // / _ __ / // // /| | / / __ / / / // __ | | /| / / / , // ___ |/ // // __/ / // // /| |/ |/ / // ||// ||_/// // _/ |/|__/

  • Running on all addresses (0.0.0.0)
  • 访问项目 直接在浏览器访问localhost就好了,沟槽ragflow的开的是80端口。