
Было сделано приложение Rag на основе Langchain, которое работает с использованием векторных Entgeddings и Google Gemini Pro LLM.
export GOOGLE_API_KEY= " your api key "UntructuredExcelloader использовался от Langchain.document-Loaders, который используется для загрузки данных электронных таблиц Excel в документы.
Модель Google Gemini Pro была использована для завершения контекстуального чата.
llm = ChatGoogleGenerativeAI ( model = "gemini-pro" , google_api_key = os . environ [ "GOOGLE_API_KEY" ])
embeddings = GoogleGenerativeAIEmbeddings ( model = "models/embedding-001" )Vector Store Faceiss (Facebook AI Searnity Searnity) использовался для создания и хранения семантических встраиваний для загруженных документов. Затем векторный магазин может быть запрошен с помощью поиска сходства, чтобы получить наиболее актуальную информацию.
vectordb = FAISS . from_documents ( documents = docs , embedding = embeddings )
# save db as pickle file
with open ( "vectorstore.pkl" , "wb" ) as f :
pickle . dump ( vectordb , f )
#load db from pickle file
with open ( "vectorstore.pkl" , "rb" ) as f :
my_vector_database = pickle . load ( f )
# get 5 most relevant similar results
retriever = my_vector_database . as_retriever ( search_kwargs = { "k" : 5 })RactpureTemplate использовался от Лэнгкейна для создания эффективных подсказок, которые впоследствии будут переданы модели. Подсказка также содержит входные переменные, которые указывают на модель, что пользователь будет передана некоторая информация.
template = """
You are a very helpful AI assistant.
You answer every question and apologize polietly if you dont know the answer.
The context contains information about a person,
title of their thesis,
the abstract of their thesis
and a link to their thesis.
Your task is to answer based on that information.
context: {context}
input: {input}
answer:
"""
prompt = PromptTemplate . from_template ( template )Цепочка реплексии использовалась для передачи документов/внедрения в модель в качестве контекста для повышенной генерации репресса.
combine_docs_chain = create_stuff_documents_chain ( llm , prompt )
retrieval_chain = create_retrieval_chain ( retriever , combine_docs_chain )