最近,在看一些 RAG 相关的内容,但在实操的时候发现生成的内容有些不尽人意。
第一个想到的点就是提供的原始数据有问题。比如,直接上传一本 <斗破苍穹.txt> 的小说,然后进行文本 chunk ,接着就是后面的流程,但效果就是脏数据进,脏数据出。
疑惑,是不是不应该直接使用原始数据,而是需要对数据进行处理。
但是怎么进行处理呢,比如 <斗破苍穹.txt> 这个小说,是要人工的总结里面的内容变为 Q&A 这种问答型结构在存储到知识库里面(这样做是不是工程量太大),还是要怎么样。
所以针对原始数据的数据清洗这一块要怎么做?清洗成什么样的结构给到知识库才能产生更好的效果。
1
cinlen 137 天前
现有流程是啥?分段 -> text embeding -> 向量数据库 -> rerank -> llm ?
|
2
elza OP @cinlen 是的,现有的流程和你讲的差不多。但里面有很多细节。其中最重要的就是数据清洗这一块,直接决定了生成数据的质量。现在的问题是直接对原始数据进行分段,提问得到的效果并不好。怎么对原始数据进行清洗或者变换为某种结构,在进行分段会好一点呢?
|
3
kneo 137 天前 via Android
别抱太大期待。单纯基于 RAG 做通用问答系统,现状就是你说的“不尽人意”。
|
4
SunnyRain 137 天前
换一个中文的 embedding 模型试试看
|
6
cinlen 137 天前
|
7
SunnyRain 137 天前
或者试试 GraphRAG ,我看官方给的例子跟你的需求差不多。GraphRAG 每一段 chunk 会有知识图谱关联,索引出来的内容关联性更高一些。
|
9
yuhr123 137 天前
GraphRAG 的关系图应该可以满足楼主的需要,只是这个东西对 embedding 的消耗会比较大,每次新增内容都会重新计算它与现有资源的关系。增长不是线性的,但 token 消耗量会有相对固定的模式。比如最近一次的消耗量是 50k token ,要新增一个 2000 字的文本文件,它也可能会有 50k 左右的消耗(主要取决于内容的关联度,不是一定的)。
简言之,对计算资源的消耗要有心理准备,但值得一试。 |
10
GrayXu 137 天前
只是 llm 提取成 q&a 的话,细节会丢失很多(参考 fastgpt 的实现)。
现在最优解应该还是 graphrag 。 |