关联知识库:RAG通识
起源:Meta发布RAG论文
2020年,Meta发布 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
https://arxiv.org/abs/2005.11401
why RAG?
- 数据滞后
- 企业知识库向量化,提供特定上下文的大模型增强搜索
定义
将结构化知识的精准性与生成式AI的创造力相结合。
搜索发展历程
- 精确匹配 与或非 / 全文搜索
- NLP自然语言处理 CNN,RNN (Transfomer架构之前)
- Transfomer架构构建的LLM和RAG结合搜索实现:
实现思路 LLM+动态数据源
-
检索阶段 从外部数据源检索与用户查询相关信息 【语义向量搜索】数据前置处理
外部数据源:API,数据库,文档库等等 -
生成阶段
将检索信息和用户promot一起输入大模型,生成增强的回答。
模块化RAG —— 工程化
- 搜索模块 在不同的数据源上搜索
技术栈
LangChain
- 模块化设计,提供构建动态信息检索的组件
LammaIndex
- 提供高效索引机制
RAG挑战
- 数据隐私和安全
- 系统性能
- 多样化查询需求产生的查询路由功能 (似乎有点往agent上靠了)
- 数据审计和监控
Embedding 向量化
计算多个向量之间的相似度并排序
- 余弦相似度,向量夹角越小越相似
1 完全相同
0 没有相似性
-1 完全相反
数据索引和检索
索引
- 倒排索引,全文检索
- B树索引
- 哈希索引
检索
-
布尔模型
-
向量检索
- 余弦相似度
-
概率模型(BM25 + 语言模型)
-
神经网络模型agent开发指数
-
相似度计算(向量模型和神经网络模型的实例化)
- 余弦相似度 向量夹角越小越相似
- 欧式距离:向量实际值
- 点积 点积值越大越相似
技术实现
- ElasticSearch
- Annoy 向量化数据快速搜索
- FAISS 为大规模向量数据设计 支持GPU加速
Transfomer自注意力机制
- 输入嵌入(输入向量化)
- 线性变换,得到查询,键,值三个向量
- 注意力得分计算 计算查询向量和键向量的点积,得到注意力的得分(表示当前词对其他词的相关性)
- 注意力权重计算
RAG工作范式
- 朴素RAG 描述了RAG工作流程的基础框架
- 文档库向量化
- 根据查询条件向量化检索文档库
- 将查询和检索结果扔给大模型
- 进阶RAG 基于朴素RAG的优化
- 文档向量化的精细控制 (分割策略,编码方法) 最佳实践?
- 检索前的用户查询优化(自动优化用户promot) + 检索后的文档重排序(权重机制 ,评分模型)当前最佳实践?
- 结果校验(生成内容语义一致性和事实准确性校验)
- 模块化RAG
- 专用查询向量数据库 我怎么觉得这是基本条件呢?
- 回答融合,使用多个模型或多次回答,最终融合结果,适用于多角度解答和多源信息场景
- 微调 , 强化学习 (底层大模型的定制化)
- RAG模式编排,适用不同场景
RAG优势
- 动态知识库更新
- 专业性(eg:医学领域,结合最新的研究论文,临床指南,药品说明书,提供更加科学可信的建议,提升回答质量,增强用户对系统的信任感)
RAG应用场景
- 基于规则的客户服务 到 RAG增强的客户服务 (动态检索知识库,产品手册,常见问题问答)
检索系统横评
基于知识图谱 wikidata, dbpedia
基于关系型数据库
基于向量数据库
向量数据量横评
es 生态
faiss gpu 多索引
milvus gpu 多索引 多模态友好 ai生态(langchain, llamaindex, hugging face)
嵌入模型选型
MTEB
- 性能与资源消耗
- 多语言
- 本地部署/云托管
浙公网安备 33010602011771号