RAG 分为离线数据处理和在线检索两个过程。离线数据处理旨在构建知识库,就像准备一本“活字典”,知识会按特定格式和排列方式存储在其中以待使用。在线检索则是利用知识库和大模型进行查询的过程。
LangChain 是专注于大模型应用开发的平台,提供一系列组件和工具帮助构建 RAG 应用,包括:
1. 数据加载器(DocumentLoader):能从数据源加载数据并转换为包含 page_content(文本内容)和 metadata(元数据)的文档对象。
2. 文本分割器(DocumentSplitter):将文档对象分割成多个小文档对象,方便后续检索和生成,因大模型输入窗口有限,短文本更易找相关信息。
3. 文本嵌入器(Embeddings):将文本转换为高维向量的嵌入,用于衡量文本相似度以实现检索。
4. 向量存储器(VectorStore):存储和查询嵌入,通常使用 Faiss 或 Annoy 等索引技术加速检索。
5. 检索器(Retriever):根据文本查询返回相关文档对象,常见实现是向量存储器检索器,利用向量存储器的相似度搜索功能检索。
6. 聊天模型(ChatModel):基于大模型如 GPT3,根据输入序列生成输出消息。
使用 LangChain 构建 RAG 应用的一般流程如下:(具体流程未给出)
2024-10-11