作业贴:使用langchain实现一个RAG 11248284577cs #181

Open
opened 2024-10-11 22:42:47 +08:00 by 11248284577cs · 0 comments

from langchain.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings # 注意这里的变化
from langchain_openai import ChatOpenAI # 新增这一行
from langchain.vectorstores import FAISS
from langchain.text_splitter import CharacterTextSplitter
from langchain import PromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain.chains import RetrievalQA
import os

说明

数据加载:使用 TextLoader 加载文本文件。

文本分割:将大块文本分割成较小的段落。

创建向量存储:使用 OpenAIEmbeddings 将分割后的文本嵌入到向量空间,并存储在 FAISS 向量数据库中。

创建 RetrievalQA 链:使用向量存储构建 RetrievalQA 链,该链可以从向量存储中检索相关信息并生成答案。

运行智能体:使用智能体运行查询并获取结果。

打印当前工作目录,确保文件在正确的目录下

print("Current Working Directory:", os.getcwd())

加载数据

loader = TextLoader("./ming_history.txt", encoding='utf8')
documents = loader.load()

分割文本

text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

创建向量存储

embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(texts, embeddings)

创建 RetrievalQA 链

qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-3.5-turbo"),
chain_type="stuff",
retriever=vectorstore.as_retriever(),
return_source_documents=True
)

定义 prompt

prompt_template = "明朝建立什么时候,皇帝是谁?中文回复"

运行智能体

result = qa_chain(prompt_template)
print(result['result'])

明朝建立于1368年,皇帝是朱元璋。

from langchain.document_loaders import TextLoader from langchain_openai import OpenAIEmbeddings # 注意这里的变化 from langchain_openai import ChatOpenAI # 新增这一行 from langchain.vectorstores import FAISS from langchain.text_splitter import CharacterTextSplitter from langchain import PromptTemplate from langchain.chat_models import ChatOpenAI from langchain.agents import initialize_agent, AgentType from langchain.chains import RetrievalQA import os # # 说明 # 数据加载:使用 TextLoader 加载文本文件。 # 文本分割:将大块文本分割成较小的段落。 # 创建向量存储:使用 OpenAIEmbeddings 将分割后的文本嵌入到向量空间,并存储在 FAISS 向量数据库中。 # 创建 RetrievalQA 链:使用向量存储构建 RetrievalQA 链,该链可以从向量存储中检索相关信息并生成答案。 # 运行智能体:使用智能体运行查询并获取结果。 # # 打印当前工作目录,确保文件在正确的目录下 print("Current Working Directory:", os.getcwd()) # 加载数据 loader = TextLoader("./ming_history.txt", encoding='utf8') documents = loader.load() # 分割文本 text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) texts = text_splitter.split_documents(documents) # 创建向量存储 embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(texts, embeddings) # 创建 RetrievalQA 链 qa_chain = RetrievalQA.from_chain_type( llm=ChatOpenAI(model="gpt-3.5-turbo"), chain_type="stuff", retriever=vectorstore.as_retriever(), return_source_documents=True ) # 定义 prompt prompt_template = "明朝建立什么时候,皇帝是谁?中文回复" # 运行智能体 result = qa_chain(prompt_template) print(result['result']) # 明朝建立于1368年,皇帝是朱元璋。
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#181
No description provided.