大模型学习路线(3)——知识检索增强(RAG)

本文详细介绍了RAG技术,包括理论基础、进阶步骤如Token分词、Embedding技术、知识向量库和相似性搜索,以及RAG在实践中的应用和案例。特别强调了RAG在LLM中的重要性和关键技术点。
摘要由CSDN通过智能技术生成

目录

一、 RAG理论篇(基础)

二、RAG理论篇(进阶)

1. Token分词

2. Embedding技术

3.知识向量库

4.相似性搜索/向量检索

5.知识召回

三、RAG实践篇


        上图为LLM+RAG运行的整体流程。如果想对RAG有系统化的理论认知,基本看如下三篇技术概览足矣,其它不再多做赘述了,毕竟没必要重复造轮子(bushi。

        章节一的三篇技术概览了RAG理论部分,从RAG整体流程介绍,到RAG流程涉及每一步骤的细节详解、常用技术,再到总结、当下发展、未来展望。章节二为进阶部分,介绍了RAG涉及的关键技术。章节三给出了RAG实战demo。

        RAG内容为LLM岗重点考察内容,涉及知识点多的嘞!!!


一、RAG理论篇(基础)

RAG整体流程
  1. RAG技术概览(一)高级检索增强生成技术(RAG)全面指南:原理、分块、编码、索引、微调、Agent、展望 - 知乎 (zhihu.com)
  2. RAG技术概览(二)深度好文!最全的大模型 RAG 技术概览 - 知乎 (zhihu.com)
  3. RAG技术概览(三)RAG实战全解析:一年探索之路 - 知乎 (zhihu.com)

二、RAG理论篇(进阶)

1. Token分块

官网链接:字符文本分割器# | LangChain中文网:500页中文文档教程,助力大模型LLM应用开发从入门到精通

常用知识向量库有自定义分割器BPE字符文本分割器(CharacterTextSplitter)、Huggingface长度函数(CharacterTextSplitter.from_huggingface_tokenizer)、Latex 文本分割器(LatexTextSplitter)、Markdown文本分割器(MarkdownTextSplitter)、NLTK文本分割器(NLTKTextSplitter)、PythonCodeTextSplitter、递归字符文本分割器(RecursiveCharacterTextSplitter)、Spacy 文本分割器(SpacyTextSplitter)、TiktokenText 分割器。

2. Embedding技术

转至链接:文本嵌入模型 text-embedding-model# | LangChain中文网:500页中文文档教程,助力大模型LLM应用开发从入门到精通

3. 知识向量库

常用知识向量库有Milvus、FAISS、Zilliz、Elasticsearch、Chroma、Lance等。详情访问LangChain中英文官网链接:Milvus# | LangChain中文网:500页中文文档教程,助力大模型LLM应用开发从入门到精通(中);Vector stores | 🦜️🔗 LangChain(英)。

4. 相似性搜索/向量检索

常用相似性搜索有:

详情访问LangChain中英文官网链接:检索器接口 Retrievers# | LangChain中文网:500页中文文档教程,助力大模型LLM应用开发从入门到精通(中);Vector store-backed retriever | 🦜️🔗 LangChain(英)

(1-4流程的demo如下)

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma



### 入门 Demo
# (1)读取外加文档
with open('../../state_of_the_union.txt') as f:
    state_of_the_union = f.read()
# (2)Token分块
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_text(state_of_the_union)

# (3)Embedding嵌入(以向量数据库Chroma为例)
embeddings = OpenAIEmbeddings()
# (4)存入向量数据库
docsearch = Chroma.from_texts(texts, embeddings)

# (5)相似性检索(similarity search)
query = "What did the president say about Ketanji Brown Jackson"
docs = docsearch.similarity_search(query)
# (6)Results
print(docs[0].page_content)

5. 知识召回

5.1 知识召回流程

        (此处cue一下推荐系统的知识召回。针对推荐系统,后续也会进行系统的学习+实践+专栏整理,埋个坑先......)

图5.1 知识召回+Rank排序

(1)物料库经过Tokensize、Embedding后,得到Vectors,扔进向量数据库进行初步检索和知识召回对称召回和非对称召回

(2)初步召回得候选集进行粗排

(3)粗排后,对候选集进行精排,根据Q & A的匹配程度/相似度进行Rank排序,挑选Top K个答案。涉及多种技术,包括文本召回、向量召回、推荐召回、标签召回、Embedding召回、协同召回、图召回等,以及多种召回算法混合的多路召回;(召回方法如何选择,一看具体的业务场景,二看准确率和召回速度上的平衡。一般来说,多路召回效果好、但召回和推理速度很慢,单路召回速度快,但准确率可能会有所损失。)

(4)Rerank,得到Top K检索结果,以及各检索项的得分。

5.2 RAG知识召回分类

        分生成式和检索式召回(文本召回、语义召回、多路召回)召回两个角度。重点分析检索式召回和文本召回、语义召回的优缺。

图5.2 LLM常用知识召回分类

召回分类

文本召回(/倒排召回/稀疏向量召回) 

语义召回(/向量召回/稠密向量召回)

优点

(1)检索速度更快;

(2)可解释能力强;

(3)精确匹配能力强;

(4)支持自定义停用词表,同义词表。

(1)考虑语义相似性,更加智能;

2语义相近即可召回,无需寻找同义词替换

3无需考虑复杂的传统倒排的调优手段

(4)具备支持跨模态召回的潜力。

缺点

(1)无语义信息,对一词多义不友好;

(2)语义偏移。

需要模型训练,对垂直领域落地支持有限

1垂直领域泛化性不足不理解专有词汇易出现语义相似但主题不相似的情况);

2对精准匹配支持不足,难以用专业词汇精准召回

3可解释能力弱

(4)需要更多的计算资源

(5)对”多词一义”情况的支持不如倒排召回中的同义词表简单直接。


三、RAG实践篇

转至链接:大模型学习路线(10)——入门项目推荐_大模型入门实例-CSDN博客(章节二);

或参考原项目链接:飞桨AI Studio星河社区-人工智能学习与实训社区 (baidu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值