赞
踩
RAG 是一种解决的 pipeline.
RAG对于大语言模型来说类比于开卷考试。
三个步骤
技术
准备好数据,需要放进数据库中的数据类型
Documents Loader
Embedding Model
Vector Database
应用上线之后,真的来了问题,需要把问题转换成向量,去向量空间里面去做一个近似性搜索,找到相关文档进行返回。
一个好的向量数据会把含义相近的上下文放在一起,区分单纯的关键词匹配。
索引一般采用的是 ANN 算法。
分为检索前、检索中、检索后三个阶段,看可以采用的技术。
借助 LLM 的能力,可以理解成有一个小小的 LLM agent,拿到用户的问题之后,会去看问题属于哪一类。
比如会在数据库中建立两类索引,一类是和总结相关的,另外的索引就是常规的明细介绍。如果发现问题是和总结相关的,小agent就应该说你应该去 summay index 里面去做检索。
借助 LLM 的技术,对 query 做一个转换
chunk 如果太大, 向量表示可能隐藏掉相关文本的语义。
使用从小到大的技术。
hybrid: 混合的检索方式 keyword+embedddings.
把 keyword 加到 query 里面,做一个精确的检索?具体做法?
这个是比较重要的,也是建议刚开始建立原型的话也可以去采用的一个技术.
相似性搜索后,和相关不是百分百对应的。检索出来的上下文不一定是相关的。可以再用一个另外一个小型的模型,输入是用户的问题以及检索出来的文档,去看问题和文档的相关性。
再去做一个排序,做一个二级检索。二级检索的时候就要对前面的检索进行一定的调整。(应该只是对第一轮检索做了一个相关性过滤)
第一轮,检索100个或30个,re-ranker 后用 top5, 放进大语言模型做生成
存储时可以把作者存入
检索时可以增加作者这个元数据去做二次过滤,去提升检索效果
大语言模型有 window 限制, 找到的 chunk,尽管用了一些方法,但是还是存在一些噪声,和query不太相关,但是却不太能把它删除。
再借助另一个语言模型,把增强型的prompt再进行一个压缩,把有用的信息增强,把不相关的信息减弱。
模型:适合场景的模型,比如代码类,问答类会有对应的模型
部署:低延迟、高吞吐率。是否支撑换模型。
在产品阶段不是一蹴而就,需要多次迭代。需要看实践是否满足需求。如何评价整个 RAG 流程的工作效率是非常重要的一环。
不同的评估标准的指标都不一样,对标准的计算公式也不太一样,难度也不同,按需选择。
nvidia text qa embedding model
提升检索速度
GPU 加速的 ANN 索引
为输出提供围栏?具体没说,已经开源,可以查看文档。
已经开源,可以查看文档
RAGAS: Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines
Example: ChipNemo
一个借助于RAG制造芯片的例子。里面是结合了RAG和微调两种技术。
Custom tokenizers| Domain-adaptive continued pretraining |
Supervised fine-tuning (SFT) with domain-specific instructions | domain-adapted retrieval models.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。