
11/5 2, 3, 4, 5, 6, 7세션
추가적인 학습을 통해 성능 향상
학습하지 않아도 웹에서 검색해와서 답변해줌
Google, 2017, Attention Is All You NeedWord2Vec : 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를 수치화FastText : 하나의 단어 안에도 여러 단어들이 존재하는 것으로 간주nations = ['한국','중국','일본','인도','미국','영국']
prompt = PromptTemplate(template = "{nation}의 인구수는? 숫자로만 대답해줘", input_variables = ["nation"])
result = chat([HumanMessage(content=prompt.format(nation = nations))])
print(result.content
CommaSeparatedListOutputParser : 콤마로 구분하여 자름# 출력파서 선언
output_parser = CommaSeparatedListOutputParser()
# 사용
result = chat([HumanMessage(content = "대전의 대표 관광지 5곳 알려줘."),
HumanMessage(content = output_parser.get_format_instructions())])
output = output_parser.parse(result.content)
print(output)
add_text(), add_documents())> input_list2 = ['오늘 날씨는 매우 맑음. 낮 기온은 30도 입니다.', '어제 주가는 큰 폭으로 상승했습니다.']
> metadata = [{'category':'test'}, {'category':'test'}]
> doc2 = [Document(page_content = input_list2[i], metadata = metadata[i]) for i in range(2)]
> ind2 = database.add_documents(doc2)
> database.get(ind2)
{'ids': ['05627d20-64d7-4c6c-aee8-ce469da9ca0c',
'0661d61e-6704-4ef9-833b-2cfd2a8ee613'],
'embeddings': None,
'metadatas': [{'category': 'test'}, {'category': 'test'}],
'documents': ['오늘 날씨는 매우 맑음. 낮 기온은 30도 입니다.', '어제 주가는 큰 폭으로 상승했습니다.'],
'uris': None,
'data': None}
# 문서 조회1
query = "오늘 낮 기온은?" # 질문할 문장
k = 3 # 유사도 상위 k 개 문서 가져오기.
result = database.similarity_search(query, k = k) #← 데이터베이스에서 유사도가 높은 문서를 가져옴
print(result)
print('-'*50)
for doc in result:
print(f"문서 내용: {doc.page_content}") # 문서 내용 표시
---
[Document(page_content='오늘 날씨는 매우 맑음. 낮 기온은 30도 입니다.', metadata={'category': 'test'}), Document(page_content='어제 주가는 큰 폭으로 상승했습니다.', metadata={'category': 'test'}), Document(page_content='test 데이터 입력1')]
--------------------------------------------------
문서 내용: 오늘 날씨는 매우 맑음. 낮 기온은 30도 입니다.
문서 내용: 어제 주가는 큰 폭으로 상승했습니다.
문서 내용: test 데이터 입력1
ConversationBufferMemory 함수embeddings = OpenAIEmbeddings(model = "text-embedding-ada-002")
database = Chroma(persist_directory = "./db2", embedding_function = embeddings)
chat = ChatOpenAI(model="gpt-3.5-turbo")
k=3
retriever = database.as_retriever(search_kwargs={"k": k})
# 대화 메모리 생성
memory = ConversationBufferMemory(memory_key="chat_history", input_key="question", output_key="answer",
return_messages=True)
# ConversationalRetrievalQA 체인 생성
qa = ConversationalRetrievalChain.from_llm(llm=chat, retriever=retriever, memory=memory,
return_source_documents=True, output_key="answer")