ccchian/RAG_test
0
1from langchain_community.vectorstores import Chroma2from langchain.document_loaders import PyPDFLoader3from langchain.text_splitter import RecursiveCharacterTextSplitter4from langchain_openai.embeddings import OpenAIEmbeddings5from langchain.chains import ConversationalRetrievalChain6from langchain_openai import ChatOpenAI7import gradio as gr8 9# 讀取檔案10file_path = "mozilla.pdf"11loader = PyPDFLoader(file_path)12 13# 選擇 splitter 並將文字切分成多個 chunk14splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)15texts = loader.load_and_split(splitter)16 17# 建立本地 db18embeddings = OpenAIEmbeddings()19vectorstore = Chroma.from_documents(texts, embeddings)20 21# 建立 RAG chian22QA_chain = ConversationalRetrievalChain.from_llm(ChatOpenAI(model="gpt-4o-mini", temperature=0), vectorstore.as_retriever())23 24def generate_response(query):25 26 result = QA_chain({"question": query, 'chat_history': []})27 28 return f'{result["answer"]}'29 30iface = gr.Interface(31 fn=generate_response,32 inputs="text",33 outputs="text",34 title="數位身份白皮書查找機器人"35)36 37iface.launch()