作业贴:使用langchain实现一个RAG 11248284577cs #181
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#181
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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年,皇帝是朱元璋。