RAG:检索增强生成是什么?
RAG的主要流程
Retrieval-Augmented Generation: 检索增强生成
能够根据问题的特点还有上下文, 生成更加个性化和精确的回答
- 为LLM提供来自外部知识源的额外信息的概念。这允许它们生成更准确和有上下文的答案,同时减少幻觉
- (1)检索:外部相似搜索 (2)增强:提示词更新 (3)生成:更详细的提示词输入LLM
- 主要流程: 输入问题-> Retrieval检索向量数据库 -> 得到Context上下文 -> 生成详细的prompt提示 -> 再根据LLM生成对应的回答 -> 最后返回给用户
LangChain中RAG中的Retrieve实现
- Source: 很多数据源的支持
-
- github
- YouTube
- discord
- PPT等等
- Loader: 对Source数据源Load到LangChain这个系统里面
- Transform: 对数据进行向量转化, 对不同数据格式进行转化
- Embedding: 向量化, 嵌入到向量空间
- Store: 将向量数据存储到向量数据库里面
- Retrieve: 通过Retrieve方式进行检索
Loader: 让大模型具备实时学习能力
Loader加载MarkDown文件
# 我是一个markdown加载示例
- 第一项目
- 第二个项目
- 第三个项目
## 第一个项目
AI研习社最厉害专业的AI研究基地
## 第二个项目
AIGC打造未来AI应用天地
## 第三个项目
AI研习社是一个非常牛逼的AI媒体
#使用loader来加载markdown文本
from langchain.document_loaders import TextLoader
loader = TextLoader("loader.md")
loader.load()
输出:
[Document(page_content='# 我是一个markdown加载示例\n- 第一项目\n- 第二个项目\n- 第三个项目\n\n## 第一个项目\nAI研习社最厉害专业的AI研究基地\n\n## 第二个项目\nAIGC打造未来AI应用天地\n\n## 第三个项目\nAI研习社是一个非常牛逼的AI媒体', metadata={'source': 'loader.md'})]
Loader加载CVS文件
#使用loader来加载cvs文件
from langchain.document_loaders.csv_loader import CSVLoader
#loader = CSVLoader(file_path="loader.csv")
loader = CSVLoader(file_path="loader.csv",source_column="Location")
data = loader.load()
print(data)
输出:
[Document(page_content='\ufeffProject: AI GC培训\nDES: 培训课程\nPrice: 500\nPeople: 100\nLocation: 北京', metadata={'source': '北京', 'row': 0}), Document(page_content='\ufeffProject: AI工程师认证\nDES: 微软AI认证\nPrice: 6000\nPeople: 200\nLocation: 西安', metadata={'source': '西安', 'row': 1}), Document(page_content='\ufeffProject: AI应用大会\nDES: AI应用创新大会\nPrice: 200门票\nPeople: 300\nLocation: 深圳', metadata={'source': '深圳', 'row': 2}), Document(page_content='\ufeffProject: AI 应用咨询服务\nDES: AI与场景结合\nPrice: 1000/小时\nPeople: 50\nLocation: 香港', metadata={'source': '香港', 'row': 3}), Document(page_content='\ufeffProject: AI项目可研\nDES: 可行性报告\nPrice: 20000\nPeople: 60\nLocation: 上海', metadata={'source': '上海', 'row': 4})]
Loader加载Excel文件
安装插件:
! pip install "unstructured[xlsx]"
示例:将example目录下的所有*.xlsx文件都加载进来
#某个目录下,有excel文件,我们需要把目录下所有的xlxs文件加载进来
#! pip install "unstructured[xlsx]"
from langchain.document_loaders import DirectoryLoader
#目录下的.html和.rst文件不会被这种loader加载
#loader = DirectoryLoader("目录地址",glob=