返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

RAGFlow(2):集成深度文档理解能力的RAG引擎

[复制链接]
链载Ai 显示全部楼层 发表于 9 小时前 |阅读模式 打印 上一主题 下一主题

RAG常见的应用架构如下,整个架构图的核心主要是两部分:

  1. 向量数据库:文档向量存储与查询召回
  2. 中间件:文档分块处理并转成合适的Embedding,比如LangChain和LlamaIndex

RAG现存问题与解决方法

问题1:向量表征的语义召回粒度难以控制

通过对文档进行适当的切分,可以平衡语义的精确度和召回的效率。使用LangChain、LlamaIndex等中间件来实现文档的合理切分。

问题2:文档切分策略的确定

采取基于空白的文字分段,并将标题与段落合并的策略,以确保段落既能够体现局部文字的语义,也能反映整篇文章或章节的主题。

问题3:RAG系统与LLM微调的争论

随着时间的推移,业界逐渐认识到RAG系统和LLM微调各有优势,两者可以结合使用,以达到更好的问答质量。RAG系统在实时性和成本方面相较于LLM微调具有优势,因此更受青睐。

问题6:长上下文LLM对RAG的挑战

尽管长上下文LLM在处理长文本和复杂图表方面表现出色,并不能满足用户海量数据的需求,成本高,速度也不够快,也只能针对长文本、图片等数据提问。RAG依然在个人知识库问答场景依然是非常必要的,两者可以结合使用。LLM 的长上下文能力,对于 RAG 来说应该是很大的促进。用 OpenAI 联创 Andrej Karpathy 的一张图做个类比,他把 LLM 比喻为一台计算机的 CPU, 把上下文类比为计算机的内存,那么以向量为代表的数据库,就可以看作是这台计算机的硬盘

问题7:RAG的查询和排序能力

比如单纯依靠向量数据库进行单路召回很难满足 RAG 落地要求。目前 RAG 大多面向C端个人知识库这样的简单场景,这些场景的用户数据,基本都是文档,那么个人用户对于文档的提问,大体上都是围绕着摘要总结来做的,答案看上去差不多就行。当面向B端时,单靠向量检索就力不从心了,一来无法对精确信息召回,二来无法与企业内部信息系统集成(大量结构化数据)。所以必须在检索阶段引入多路召回和重排序,保证数据查询的准确度。

问题8:如何应对复杂多变的数据

这些数据包含各种格式,更复杂的还包含各类图表等,如果在没有理解这些语义的基础之上直接提供 RAG 方案,例如简单的根据文字空白就来切分段落,就会导致语义丢失从而让最终查询的结果也是混乱不堪。infiniFlow提出的 Infinity AI原生数据库。它旨在应对RAG在企业级应用中所面临的复杂查询挑战:这包括如何将企业现有的各类数据——不仅涵盖非结构化的内容如文档和图片,也包括结构化的信息系统——进行有效整合,并在此基础上实现多路召回机制和最终的融合排序解决方案。

? 部署体验

ragflow本地容器化部署

先拉一下代码

gitclonehttps://github.com/infiniflow/ragflow.git

ragflow默认从hf上下载模型,如果没有梯子,就配置一下ragflow/docker/docker-compose.yml文件里面的hf的endpoint地址,改成 https://hf-mirror.com接着按照下面步骤启动容器即可

cdragflow/docker/

chmod+x./entrypoint.sh

sudosysctl-wvm.max_map_count=262144

sudodockercomposeup-d

服务启动后,查看一下日志

sudodockerlogs-fragflow-server

看到这个就ok了打开 http://localhost:80 即跳转登录页面,注册之后就可以进入

通过ngrok配置转发ragflow服务

ngrok在ubuntu的快速安装

sudoaptinstallsnapd#先安装snap
snapinstallngrok

安装完之后需要在官网注册一下,并且配置token

ngrokconfigadd-authtoken2d********Jpg

ngrok查看配置路径

ngrokconfigcheck

打开上面的配置路径,可以在authtoken字段下面增加tunnel字段。但是注意,官方只提供一个免费域名,也就是只能一个app配置这个域名,那其他app就会随机分配域名

tunnels:
ssh:
proto:tcp
addr:2222
jupyter:
proto:http
addr:8888
domain:assured-fowl-gladly.ngrok-free.app
ragflow:
proto:http
addr:80

除了上面protoaddrdomain字段之外,还有下面配置要注意:ngrok管道只能起一次,比如要起多个jupyter和ragflow两个app,那么只能一次过启动

ngrokstartjupyterragflow

不能分开在不同的终端分别执行 ngrok start jupyter 和 ngrok start ragflow。但是如果你不想动配置管道,且在启动ragflow服务时,指定了域名,可以这样

ngrokhttp--domain=assured-fowl-gladly.ngrok-free.app80

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ