[9기 랭체인] LangChain 과제 수행

lanchain을 이용하여 내 자료를 저장하고 정보를 조회하여 대답하기

  1. Data 준비 : 자료 데이터를 읽어서 텍스트 분리하여 준비

  2. 자료를 Embeddings모델을 이용하여 벡터DB에 저장(Chroma DB)

3. ChromaDB에서 질문과 관련된 내용을 similarity로 가져오기

4. 자료 기반의 질문-답변 chain만들기


1.Data 준비

    filename="스케줄.pdf"
    collection_name="schedule"

2. 자료를 Embeddings모델을 이용하여 벡터DB에 저장(Chroma DB)

https://docs.trychroma.com/

def Text_embedding_test_chroma(docs, collection_name,persist_directory):
    embedding_model= GPT4AllEmbeddings()

    vectordb = Chroma.from_documents(
        documents=docs,
        collection_name=collection_name,
        embedding=embedding_model,
        persist_directory =persist_directory 
    )
    
    vectordb.persist()
    vectordb=None

*저장 결과 확인

 def get_documentfromcolleciton(collection_name,persist_directory):
    client = chromadb.PersistentClient(path=persist_directory)
    collection = client.get_collection(name=collection_name)
    print(collection.count())
    print(collection.peek()) 

3. ChromaDB에서 질문과 관련된 내용을 similarity로 가져오기

vectordb = Chroma(persist_directory=dbname,
                  collection_name=collection_name,
                  embedding_function=embedding_function)
retriever = vectordb.as_retriever(search_type="similarity", search_kwargs={"k":2}) 


4.자료 기반의 질문-답변 chain만들기

llm_name = "gpt-3.5-turbo"
llm = ChatOpenAI(openai_api_key=openai_key,model_name=llm_name, temperature=0.1)
qa_chain = RetrievalQA.from_chain_type(
      llm,
       retriever=retriever,
       chain_type="stuff", 
      chain_type_kwargs={"prompt": QA_CHAIN_PROMPT}
    )    
question =input("질문을 입력해주세요    :  ")
results = qa_chain({"query": question})
result1=output_parser.invoke(results["result"])
print(results["result"])

7. 기타

#9기랭체인

3
1개의 답글

👉 이 게시글도 읽어보세요

모집 중인 AI 스터디