langchain +RAG 构建私域知识库

  1. 如何利用你的垂域数据补充LLM的能力
  2. 如何构建你的垂域向量知识库
  3. 搭建一套完整的RAG系统需要哪些模块

2. 什么是检索增强的生成模型(RAG)

LLM固有的局限性

  1. LLM的只是可能不是实时的
  2. LLM可能不知道你私有的领域/业务知识

检索增强生成

RAG可以通过检索的方法来增强生成模型的能力。

在这里插入图片描述
RAG的目标是通过知识库增强内容生成的质量,通常做法是将检索出来的文档作为提示词的上下文,一并提供给大模型让其生成更可靠的答案。更进一步地,RAG的整体链路还可以与提示词工程(Prompt Engineering)、模型微调(Fine Tuning)、知识图谱(Knowledge Graph)等技术结合,构成更广义的RAG问答链路。

在这里插入图片描述

3. RAG系统的基本搭建流程

搭建过程:

  1. 文档加载,并按一定条件切割成片段
  2. 将切割的文本片段灌入检索引擎
  3. 封装检索接口
  4. 构建调用流程:Query–> 检索 --> Prompt --> LLM --> 回复

文档的加载与切割

4. 向量检索

文本向量

  1. 将文本转换成一组浮点数:每个下标 iii ,对应一个维度
  2. 整个数组对应一个n维空间的一个点,即文本向量
  3. 向量之间可以计算距离,距离远近对应语义相似度的大小

在这里插入图片描述

向量间的相似度计算

在这里插入图片描述

向量数据库

import numpy as np
from numpy import dot
from numpy.linalg import norm

# 余弦距离,越大越相似
def cosine_distance(x, y):
    return dot(x, y) / (norm(x) * norm(y))

# 欧式距离,越小越相似
def euclidean_distance(x, y):
    a = np.array(x) - np.array(y)
    return norm(x)
import numpy as np
from numpy import dot
from numpy.linalg import norm
from sqlalchemy.orm.collections import collection
from pdfminer.high_level import extract_pages # 用于提取 PDF 文本
from pdfminer.layout import LTTextContainer  # 1. 从 PDF 中提取文本 2. 提供了有关文本的布局和样式信息,包括字体大小、颜色、文本的起始和结束位置


# 余弦距离,越大越相似
def cosine_distance(x, y):
    return dot(x, y) / (norm(x) * norm(y))


# 欧式距离,越小越相似
def euclidean_distance(x, y):
    return norm(x - y)

def extract_t
要在 优快云 上查找从 0 到 1,Langchain + RAG 全链路实战 AI 知识库教程,可以通过以下几种方式: ### 利用 优快云 搜索框 在 优快云 官网的搜索框中输入关键词“从 0 到 1,Langchain + RAG 全链路实战 AI 知识库教程”,即可浏览搜索结果,找到相关的教程文章。 ### 筛选搜索结果 在搜索结果页面,可以根据文章的点赞数、评论数、发布时间等进行筛选,优先查看热度较高、较新的文章,以获取更优质、更符合当前技术趋势的教程。 ### 浏览相关标签和专栏 查找与“Langchain”、“RAG”、“AI 知识库”等相关的标签和专栏,里面可能会有一系列的教程文章,能帮助更系统地学习。 ### 参考示例代码 以下是在 Python 中使用 LangchainRAG 构建基本 AI 知识库的部分代码示例,帮助理解相关概念: ```python from langchain.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 加载文档 loader = TextLoader('data/your_text_file.txt') documents = loader.load() # 分割文档 text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) docs = text_splitter.split_documents(documents) # 生成 Embedding embeddings = OpenAIEmbeddings() # 向量存储 db = Chroma.from_documents(docs, embeddings) # 检索器配置 retriever = db.as_retriever() # 集成大语言模型 llm = OpenAI() qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever) # 测试 query = "你的查询问题" result = qa.run(query) print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值