diff --git a/app/rag_chain.py b/app/rag_chain.py new file mode 100644 index 0000000..2068f6d --- /dev/null +++ b/app/rag_chain.py @@ -0,0 +1,26 @@ +# rag_chain.py +import os +import weaviate +from langchain.chat_models import ChatOpenAI +from langchain.embeddings import OpenAIEmbeddings +from langchain.vectorstores import Weaviate +from langchain.chains import RetrievalQA + +def build_rag_chain(): + client = weaviate.Client( + url=os.getenv("WEAVIATE_URL"), + auth_client_secret=weaviate.AuthApiKey(os.getenv("WEAVIATE_API_KEY")), + additional_headers={"X-OpenAI-Api-Key": os.getenv("OPENAI_API_KEY")} + ) + + vectorstore = Weaviate( + client=client, + index_name="LangDocs", + text_key="text", + embedding=OpenAIEmbeddings() + ) + + retriever = vectorstore.as_retriever() + llm = ChatOpenAI(temperature=0) + + return RetrievalQA.from_chain_type(llm=llm, retriever=retriever)