一、什么是检索增强的生成模型(RAG)
1、RAG是一种结合了语言模型和信息检索技术的模型。
2、当需要生成文本或回答问题时,RAG模型会首先从一个庞大的文档
集合中检索出相关信息,然后利用这些检索到的信息来指导文本的生成,
从而提高预测的质量和准确性。
类比:你可以把这个过程想象成开卷考试。让 LLM 先翻书,再回答问题。
二、LLM 固有的局限性
1、LLM 的知识不是实时的
2、LLM 可能不知道你私有的领域/业务知识
三、RAG 系统的基本搭建流程
搭建过程:
1、文档加载,并按一定条件切割成片段
2、将切割的文本片段灌入检索引擎
3、封装检索接口
4、构建调用流程:Query -> 检索 -> Prompt -> LLM -> 回复
四、RAG搭建实战
1、类信息搭建
定义持久化目录变量、初始化向量库
class MyPDFProcessor:
_vectordb: Chroma = None
persist_directory = "/usr/local/soft/chromadb/data"
def __init__(self):
if MyPDFProcessor._vectordb is None:
MyPDFProcessor.initialize_vectordb()
2、初始化向量库
@classmethod
def initialize_vectordb(cls):
cls._vectordb = Chroma(embedding_function=OpenAIEmbeddings(),
persist_directory=cls.persist_directory)
3、pdf加载
@classmethod
def pdf_loader(cls, file_name):
pdf_loader = PyPDFLoader(file_path=file_name)
docs = pdf_loader