2024.2 ๊ธฐ์ค์ผ๋ก ์์ฑ๋ ๊ฒ์๊ธ ์
๋๋ค.
LangChain์ ์ธ์ด ๋ชจ๋ธ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ํ๋ ์์ํฌ์
๋๋ค. ์ด ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
1. LangChain ๋ผ์ด๋ธ๋ฌ๋ฆฌ: Python ๋ฐ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ๋ค์ํ ์ปดํฌ๋ํธ์ ์ธํฐํ์ด์ค ๋ฐ ํตํฉ, ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ์ฒด์ธ๊ณผ ์์ด์ ํธ๋ก ๊ฒฐํฉํ๋ ๊ธฐ๋ณธ ์คํ ํ๊ฒฝ, ๊ทธ๋ฆฌ๊ณ ์ฒด์ธ๊ณผ ์์ด์ ํธ์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌํ์ ํฌํจํฉ๋๋ค.
2. LangChain ํ
ํ๋ฆฟ: ๋ค์ํ ์์
์ ์ํ ์ฝ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ฐธ์กฐ ์ํคํ
์ฒ ๋ชจ์์
๋๋ค.
3. LangServe: REST API๋ก LangChain ์ฒด์ธ์ ๋ฐฐํฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
4. LangSmith: ๋ชจ๋ LLM ํ๋ ์์ํฌ์์ ๋น๋๋ ์ฒด์ธ์ ๋๋ฒ๊น
, ํ
์คํธ, ํ๊ฐ ๋ฐ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๊ฐ๋ฐ์ ํ๋ซํผ์ผ๋ก, LangChain๊ณผ ์๋ฒฝํ๊ฒ ํตํฉ๋ฉ๋๋ค.
LangChain์ ์ธ์ด ๋ชจ๋ธ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ณ ์ด์ํ๋๋ฐ ํ์์ ์ธ ๋๊ตฌ์
๋๋ค.
ํต์์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ง๋ฌธ์ ์ดํดํ๊ณ ์ ์ ํ ์๋ต์ ์์ฑํ๊ธฐ ์ํด ์์ฐ์ด ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ด์ด๋ผ๊ณ ํํํ์ต๋๋ค. ์ด๋ฒ ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ langchain์ RetrievalQA๋ฅผ ์ด์ฉํ์ฌ QA(Question Answering) ์์คํ
์ ๊ตฌํํด๋ด
๋๋ค. QA ์์คํ
์ ์ง๋ฌธ ์ดํด -> ์ ๋ณด ๊ฒ์ -> ๋ต๋ณ ์์ฑ ํ๋ฆ์ผ๋ก ์งํ๋ฉ๋๋ค.
QA์์คํ
์ ์ฌ์ ์ ์ค์ ํ ๋ฌธ์/์ง์์ ๊ธฐ๋ฐ์ผ๋ก ์๋ต์ ์์ฑํฉ๋๋ค. ํ ๋ฒ์ ํ๋์ ์ง๋ฌธ๋ง์ ์ฒ๋ฆฌํ๊ณ , ๋ต๋ณ ํ์ ๋ํ๊ฐ ์ข
๋ฃ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์์ ์ํธ ์์ฉ์ ์ด์ด๊ฐ๋ chatGPT ๊ธฐ๋ฐ ์ฑ๋ด๊ณผ ๋ฌ๋ฆฌ QA ์์คํ
์ ํ๋์ ์ง๋ฌธ์ ์ฒ๋ฆฌํ๊ณ ๋ต๋ณ ํ ๋ํ๊ฐ ์ข
๋ฃ๋๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
langchain์ ์ฌ์ฉํ ๊ฐ๋ฐ์ ์ํด ์ฐ์ ๊ฐ์ํ๊ฒฝ๋ถํฐ ์์ฑํฉ๋๋ค.
conda create -n langchain python=3.11
๊ฐ์ํ๊ฒฝ์ ํ์ฑํ ํ๊ณ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
conda activate langchain
pip install langchain openai pypdf chromadb tiktoken langchain-community langchain-openai
# jupyter notebook ํ๊ฒฝ์์ ์คํ์ ์ค์น
pip install jupyter notebook
์ด์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ ์ฒด ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
ํ์ํ ํจํค์ง๋ฅผ import ํฉ๋๋ค.
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.chains import RetrievalQA
์ด์ OPENAI_API_KEY๋ฅผ ์ค์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
OPENAI_API_KEY ์ํฌ๋ฆฟ ํค ์์ฑ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์ธ์.
1. OpenAI ํ์๊ฐ์ ํ https://platform.openai.com/usage ์ ์ฐ์ธก์์ ๋ณด์ ํ๊ณ ์๋ ํฌ๋ ๋ง์ ํ์ธํฉ๋๋ค. ์ ๋ ์ด๋ฏธ ๋ฌด๋ฃ ์ ๊ณต ํฌ๋ ๋ง์ ๋ชจ๋ ์ฌ์ฉํ์ฌ ์ถฉ์ ํ ์ํ์ ๋๋ค.
2. ์ข์ธก์ API keys ํญ์ผ๋ก ์ด๋ํ์ฌ ์๋ก์ด ์ํฌ๋ฆฟ ํค๋ฅผ ์์ฑํฉ๋๋ค.
3. ์์ฑํ ๋์จ ๊ฐ์ ์ ๋ณต์ฌํด๋ก๋๋ค.
๊ฐ๊ฒฉ ์ ์ฑ
์ ์์๋ก ์
๋ฐ์ดํธ ๋ ์ ์์ผ๋ฏ๋ก ์๋ ๋งํฌ์์ ๊ฐ๊ฒฉ ์ ์ฑ
์ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
https://openai.com/pricing
(์ฐธ๊ณ ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋๋ฒ๊น
ํ๋ ๋์ ์ ๊ฐ ์ฌ์ฉํ ํฌ๋ ๋ง ์ฌ์ฉ๋์ 0.05 ๋ฌ๋ฌ์์ต๋๋ค. ์ฌ์ฉ๋์ ๋ฌธ์์ ๊ธธ์ด๋ ์ฌ์ฉ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋ ํ์ด์ง (https://platform.openai.com/usage)๋ฅผ ์ฒดํฌํ์๊ธธ ๊ถ์ฅํฉ๋๋ค. )
์์ ์ OpenAI ์ํฌ๋ฆฟ ํค๋ฅผ ์ค์ ํฉ๋๋ค.
import os
os.environ["OPENAI_API_KEY"] = "์ด๊ณณ์ ํค๊ฐ ์
๋ ฅ"
์๋์ ๊ฐ์ด ์ฝ์ด์ฌ ๋ฌธ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ
์คํธ ๋ถํ ๊ธฐ์ ์๋ฒ ๋ฉ์ ์ด๊ธฐํํฉ๋๋ค. ๋ฌธ์์ ์ ๋ณด๋ฅผ ์ถ์ถํ๊ธฐ ์ํด์ ๊ฐ ํ์ผ์ ์ฝ์ด์จ ๋ค ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ํ๋์ธ Chroma DB๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์์ ์ํ ์ ๋ณด๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
from langchain_community.document_loaders import PyPDFLoader
# PDF ํ์ผ ๊ฒฝ๋ก ๋ชฉ๋ก
pdf_files = [
"docs/1.pdf",
"docs/2.pdf",
]
# ๋ก๋, ํ
์คํธ ๋ถํ ๊ธฐ ๋ฐ ์๋ฒ ๋ฉ ์ด๊ธฐํ
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
embeddings = OpenAIEmbeddings()
texts = []
# ๊ฐ PDF ํ์ผ์ ๋ํด ์์
์ํ
for pdf_file in pdf_files:
loader = PyPDFLoader(pdf_file)
documents = loader.load()
texts.extend(text_splitter.split_documents(documents))
# Chroma ๋ฒกํฐ ์คํ ์ด๋ฅผ ์ด๊ธฐํํ๊ณ ๋ฌธ์์์ ๋ฒกํฐ๋ฅผ ์์ฑํฉ๋๋ค.
docsearch = Chroma.from_documents(texts, embeddings)
์ ๊ฐ ์ฌ์ฉํ ๋ฌธ์ ํ์ผ์ apple ํํ์ด์ง์์ macOS ์ค๋ช
์๋ฅผ ๋ณต์ฌํ์ฌ pdf ๋ก ์์ฑํ์์ต๋๋ค.
๋ชจ๋ ์ค๋ช
์๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐ์๋ ์์ด ๋ฐฉ๋ํ์ฌ ๋ฐ์คํฌํ ์์๋ณด๊ธฐ ํํธ๋ง ์ฌ์ฉํ์ฌ pdf ํ์ผ์ ์์ฑํ์ต๋๋ค.
๋ค์์ผ๋ก๋ langchain์ ํ๋กฌํฌํธ ํ ํ๋ฆฟ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๊ธฐ๋ฐ ์ง์์ ์ฌ์ฉํ๋ ์ฉ๋์ ๋ง์ถฐ ์์ฑํฉ๋๋ค.
from langchain.prompts import PromptTemplate
prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
Question: {question}
Answer in Korean:"""
# ํ๋กฌํํธ ํ
ํ๋ฆฟ์ ์ค์ ํฉ๋๋ค
PROMPT = PromptTemplate(
template=prompt_template, input_variables=["context", "question"]
)
ํ
ํ๋ฆฟ ๋ด์ฉ์ ์ดํด๋ณด๋ฉด ๋ฌธ๋งฅ์ ์ฌ์ฉํ์ฌ ์ง๋ฌธ์ ๋๋ต์ ํ๋ผ๊ณ ํ๊ณ , ๋ชจ๋ฅด๋ฉด ๋ชจ๋ฅธ๋ค๊ณ ๋งํ๊ณ ๋ต์ ๋ง๋ค์ด ๋ด์ง ๋ง๋ผ๊ณ ํ๊ณ ์์ต๋๋ค.
์ด์ RetrievalQA๋ฅผ ์ฌ์ฉํด์ QA system์ ์์ฑํด๋ด
๋๋ค. ์ด ์ฝ๋๊น์ง ์์ฑํ๋ฉด ๋ชจ๋ ๋จ๊ณ๊ฐ ์๋ฃ๋ฉ๋๋ค!
chain_type_kwargs = {"prompt": PROMPT}
qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0),
chain_type="stuff",
retriever=docsearch.as_retriever(),
return_source_documents=True,
chain_type_kwargs=chain_type_kwargs)
- `llm=OpenAI()` : llm ์ธ์๋ ์ธ์ด ๋ชจ๋ธ์ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ OpenAI์ ์ธ์ด ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
- `chain_type="stuff"` : chain_type์ ์ฒด์ธ์ ์ ํ์ ์ง์ ํฉ๋๋ค.
- `retriever=docsearch.as_retriever()` : retriever๋ ๋ฌธ์ ๊ฒ์์ ์ฌ์ฉ๋๋ ๋ฆฌํธ๋ฆฌ๋ฒ(retriever)๋ฅผ ์ง์ ํฉ๋๋ค. docsearch๋ ์ฐ๋ฆฌ๊ฐ ์์์ ์ด๊ธฐํ ํ Chroma ๋ฒกํฐ ์คํ ์ด์
๋๋ค.
- `return_source_documents=True` : ์ด ์ธ์๋ RetrievalQA๊ฐ ๊ฒ์๋ ๋ฌธ์๋ฅผ ๋ฐํํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. True๋ก ์ค์ ๋์ด ์์ผ๋ฏ๋ก ๊ฒ์๋ ๋ฌธ์๊ฐ ๋ฐํ๋ฉ๋๋ค. ๊ฒ์ํ ๋ฌธ์๋ฅผ context๋ก ํ์ฉํ์ฌ ๋ต๋ณ์ ์์ฑํฉ๋๋ค.
- `chain_type_kwargs=chain_type_kwargs` : chain_type_kwargs๋ ์ฒด์ธ ์ ํ์ ์ด๊ธฐํํ๋ ๋ฐ ํ์ํ ์ถ๊ฐ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ์ ์ํ chain_type_kwargs ๋์
๋๋ฆฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋์
๋๋ฆฌ์๋ ํ๋กฌํํธ ํ
ํ๋ฆฟ ๋ฑ์ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ด์ ์ง๋ฌธ์ ์์ฑํด๋ด
๋๋ค!
result = qa.invoke({"query": "์ ์ด์ผํฐ๋ ๋ฌด์์ธ๊ฐ์?"})
result ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
{'query': '์ ์ด์ผํฐ๋ ๋ฌด์์ธ๊ฐ์?',
'result': ' ์ ์ด ์ผํฐ๋ Mac์์ ์์ฃผ ์ฌ์ฉํ๋ ํญ๋ชฉ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์์คํ
์ค์ ์์ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ ์ด ์ผํฐ์๋ ํญ์ ํ์๋๋ ๋ชจ๋๊ณผ ๋ฉ๋ด ๋ง๋์ ์ถ๊ฐํ ์ ์๋ ๋ชจ๋์ด ์์ต๋๋ค. ์ ์ด ์ผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์
์ ๋น ๋ฅด๊ฒ ์ํํ ์ ์์ต๋๋ค.',
'source_documents': [Document(page_content='์ ํํ์ญ์์ค. ํ: ์์ฃผ ์ฌ์ฉํ๋ ํญ๋ชฉ์ ์ ์ด ์ผํฐ์์ ๋ฉ๋ด ๋ง๋๋ก ๋๋๊ทธํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฉ๋ด ๋ง๋์์ ํญ๋ชฉ์ ์ ๊ฑฐํ๋ ค๋ฉด Command ํค๋ฅผ ๋๋ฅธ ์ํ๋ก ํญ๋ชฉ์ ๋ฉ๋ด ๋ง๋ ๋ฐ์ผ๋ก ๋๋๊ทธํ์ญ์์ค. ์ ์ด ์ผํฐ ์ฌ์ฉ์ํํ๊ธฐ Mac์์ Apple ๋ฉ๋ด > ์์คํ
์ค์ ์ ์ ํํ ๋ค์, ์ฌ์ด๋๋ฐ์์ ์ ์ด ์ผํฐ๋ฅผ ํด๋ฆญํ์ญ์์ค. (์๋๋ก ์คํฌ๋กคํด์ผ ํ ์ ์์ต๋๋ค.) ์ค๋ฅธ์ชฝ์ ์๋ ์น์
์์ ํญ๋ชฉ์ ๋ํ ์ค์ ์ ์ ํํ์ญ์์ค. ์ ์ด ์ผํฐ ๋ชจ๋: ์ด ์น์
์ ์๋ ํญ๋ชฉ์ ์ ์ด ์ผํฐ์ ํญ์ ํ์๋๋ฉฐ, ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ฉ๋ด ๋ง๋์ ํด๋น ํญ๋ชฉ์ ํ์ํ๋๋ก ์ ํํ ์๋ ์์ต๋๋ค. ํญ๋ชฉ ์์ ์๋ ํ์
๋ฉ๋ด๋ฅผ ํด๋ฆญํ ๋ค์, ์ต์
์ ์ ํํ์ญ์์ค. ๊ธฐํ ๋ชจ๋: ์ด ์น์
์ ํญ๋ชฉ์ ์ ์ด ์ผํฐ ๋ฐ ๋ฉ๋ด ๋ง๋์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํญ๋ชฉ ์๋์ ๊ฐ ์ต์
์ ์ผ๊ฑฐ๋ ๋์ญ์์ค. ์ผ๋ถ ํญ๋ชฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ๊ฐ ์ค์ ์ด ์์ ์ ์์ต๋๋ค. ๋ฉ๋ด ๋ง๋๋ง: ๋ฉ๋ด ๋ง๋ ์๊ณ์ ์ต์
์ ์ ํํ๊ณ ๋ฉ๋ด ๋ง๋์ ๋ค๋ฅธ ํญ๋ชฉ(์: Spotlight, Siri, Time Machine ๋ฐ VPN ์ํ)์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ฐ๋ณ ์ต์
์ ๊ดํ ์ถ๊ฐ ์ ๋ณด๋ ์ ์ด ์ผํฐ ์ค์ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Mac์์ Siri ์ฌ์ฉํ๊ธฐ Mac์์ Siri๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ์ค์ , ์ฑ ์ด๊ธฐ ๋๋ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ ๋ฑ์ ์ผ์์ ์ธ ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ฉ๋ด ๋ง๋์ Siri ์์ด์ฝ์ด ์๊ณ โ1์ธ์น๊ฐ ๋ช ์ผํฐ๋ฏธํฐ์ผโ๋ผ๋ ์์ฒญ๊ณผ ๊ทธ์ ๋ํ ๋ต๋ณ(๊ณ์ฐ๊ธฐ๋ก ๋ณํํ ์์น)์ด ์๋ Siri ์๋์ฐ๋ฅผ ํ์ํ๋ Mac ๋ฐ์คํฌํ์ ์ค๋ฅธ์ชฝ ์๋จ ๋ถ๋ถ. ํด๋ฆญํ์ฌ ๋ค๋ฅธ ์์ฒญ์ ํ ์ ์๋ Siri ์๋์ฐ ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ์์ด์ฝ. ๋ซ๊ธฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ Siri ์๋์ฐ๋ฅผ ๋ซ์ ์ ์์. Siri ์ผ๊ธฐ Mac์์ Apple ๋ฉ๋ด > ์์คํ
์ค์ ์ ์ ํํ ๋ค์, ์ฌ์ด๋๋ฐ์์ Siri ๋ฐ Spotlight๋ฅผ ํด๋ฆญํ์ญ์์ค. (์๋๋ก ์คํฌ๋กคํด์ผ ํ ์ ์์ต๋๋ค.) ์ค๋ฅธ์ชฝ์์, โSiri ์์ฒญํ๊ธฐโ๊ฐ ์์ง ์ผ์ ธ ์์ง ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ผ ๋ค์, ํ์ฑํ๋ฅผ ํด๋ฆญํ์ญ์์ค. ์ด ์ต์
์ ์ ํ ํด์ ํ ์ํ์์ Siri๋ฅผ ํ์ฑํํ๋ ค๋ ๊ฒฝ์ฐ, Siri๋ฅผ ํ์ฑํํ๋ผ๋ ๋ํ์์๊ฐ ๋ํ', metadata={'page': 5, 'source': '1.pdf'}),
Document(page_content='๋ฐ์คํฌํ์์ ์๋์ฐ ์ฐพ๊ธฐ ๋ฐ์คํฌํ์ด ์ด๋ ค ์๋ ์๋์ฐ๋ก ๊ฐ๋์ฐฌ ๊ฒฝ์ฐ, Mission Control์ ํตํด ์๋์ฐ๋ฅผ ์์ผ๋ก ์ด๋ํ์ฌ ๋ฐ์คํฌํ์ ๋ณด๊ฑฐ๋, ๋ฐ์คํฌํ์ ์ด๋ ค ์๋ ๋ชจ๋ ํญ๋ชฉ์ ๊ฐ๋จํ ํ์ํ ์ ์์ผ๋ฏ๋ก ํ์ํ ์๋์ฐ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. Mission Control์์ ์ด๋ฆฐ ์๋์ฐ ๋ฐ Spaces ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ฌ๋ฌ ๋์ ๋ฐ์คํฌํ ์ฌ์ฉํ๊ธฐ ๋ฐ์คํฌํ Spaces๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ์ฌ ํน์ ๋ฐ์คํฌํ์์ ์์
์ ์ ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ๋ฐ์คํฌํ์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ง์ค์ ์ผ๋ก ์์
ํ๋ ๋์ ๋ค๋ฅธ ๋ฐ์คํฌํ์์ ์ด๋ฉ์ผ์ ๊ด๋ฆฌํ๊ณ ๋ ๋ฐ์คํฌํ์ ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์์
์ค์ธ ์
๋ฌด์ ์ ํฉํ๋๋ก ๊ฐ ๋ฐ์คํฌํ์ ์ฌ์ฉ์ํํ ์๋ ์์ต๋๋ค. ์ฌ๋ฌ Spaces์์ ์์
ํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Mac์์ Spotlight๋ก ๊ฒ์ํ๊ธฐ Spotlight๋ฅผ ์ฌ์ฉํ์ฌ Mac์์ ์ฑ, ๋ฌธ์, ์ด๋ฉ์ผ ๋ฐ ๊ธฐํ ํญ๋ชฉ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. Siri ์ ์์ ํตํด ๋ด์ค, ์คํฌ์ธ ์ ์, ๊ธฐ์ ์ํ, ์ฃผ๊ฐ ๋ฑ์ ํ์ธํ ์๋ ์์ต๋๋ค. Spotlight๋ก ๊ณ์ฐ ๋ฐ ๋ณํ ๊ฐ์ ๊ตฌํ ์๋ ์์ต๋๋ค. Siri: ๋ค์๊ณผ ๊ฐ์ด ๋งํด ๋ณด์ญ์์ค. โ1์ธ์น๋ ๋ช ์ผํฐ์ผ?โ ๋๋ โ๋ฌ๊ฑ ๋ป์ด ๋ญ์ผ?โ Siri๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ. ํญ๋ชฉ ๊ฒ์ํ๊ธฐ Mac์์ ๋ค์ ์ค ํ๋๋ฅผ ์ํํ์ญ์์ค. ๋ฉ๋ด ๋ง๋์์ (๋ณด์ด๋ ๊ฒฝ์ฐ) Spotlight ์์ด์ฝ์ ํด๋ฆญํ์ญ์์ค. Command-์คํ์ด์ค ๋ฐ๋ฅผ ๋๋ฅด์ญ์์ค. ํค๋ณด๋์ ๊ธฐ๋ฅ ํค ํ์์ (์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ) ์ ๋๋ฅด์ญ์์ค. ๋ฐ์คํฌํ ์ด๋๋ก๋ Spotlight ์๋์ฐ๋ฅผ ๋๋๊ทธํ ์ ์์ต๋๋ค. ํ: ๋ฉ๋ด ๋ง๋์ Spotlight ์์ด์ฝ์ด ์์ผ๋ฉด ์ ์ด ์ผํฐ ์ค์ ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ฒ์ ํ๋์ ์ฐพ์ ํญ๋ชฉ์ ์
๋ ฅํ์ญ์์ค. ์
๋ ฅ๊ณผ ๋์์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค. Spotlight๋ ๊ฐ์ฅ ์ฐ๊ด์ฑ ๋์ ํญ๋ชฉ์ ๋จผ์ ๋์ดํ๋ฉฐ, ๊ฐ์ฅ ์ฐ๊ด์ฑ ๋์ ํญ๋ชฉ์ ํด๋ฆญํ์ฌ ๋ฏธ๋ฆฌ ๋ณด๊ฑฐ๋ ์ด ์ ์์ต๋๋ค. ๋ํ Spotlight๋ ์ฌ์ฉ์์ ๊ฒ์์ด๋ฅผ ๋ณํํ์ฌ ๊ฒ์ํ ํญ๋ชฉ์ ์ ์ํ๋ฉฐ Spotlight ๋๋ ์น์์ ํด๋น ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.', metadata={'page': 2, 'source': '1.pdf'}),
Document(page_content='๊ฐ์ธ์ ๋ณด\t๋ณดํธ\tํ์๊ธฐ๋\t์ \t๋๋\tํ์ดํ์ผ\t์\t์์ผ๋ฉฐ,\t์ ์ด\t์ผํฐ\t์ค๋ฅธ์ชฝ์\t์์ต๋๋ค.\tMac์\t๋ง์ดํฌ๊ฐ\t์ฌ์ฉ\t์ค์ธ\t๊ฒฝ์ฐ\t๋ฉ๋ด\t๋ง๋์์\t์ ์ด\t์ผํฐ\t์์ด์ฝ\t์์\t์ฃผํฉ์\t์ ์ด\t๋ํ๋ฉ๋๋ค.\t์นด๋ฉ๋ผ๊ฐ\t์ฌ์ฉ\t์ค์ธ\t๊ฒฝ์ฐ\t์ด๋ก์\t์ ์ด\t๋ํ๋ฉ๋๋ค.\t์์คํ
\t์ค๋์ค๋ฅผ\t๋
น์\t์ค์ธ\t๊ฒฝ์ฐ\t๋ณด๋ผ์\t์ ์ด\t๋ํ๋ฉ๋๋ค.\t์ฌ์ฉ์์\t์์น๊ฐ\t์ฌ์ฉ\t์ค์ธ\t๊ฒฝ์ฐ\tํ์ดํ๊ฐ\t๋ํ๋ฉ๋๋ค.\t๊ฐ์ธ์ ๋ณด\t๋ณดํธ\tํ์๊ธฐ\t์ ์\tํ\t๋ฒ์\tํ๋๋ง\tํ์๋ฉ๋๋ค.\t์๋ฅผ\t๋ค์ด,\t๋ง์ดํฌ\t๋ฐ\t์นด๋ฉ๋ผ๋ฅผ\t๋ชจ๋\t์ฌ์ฉ\t์ค์ธ\t๊ฒฝ์ฐ\t์ด๋ก์\t์ ๋ง\tํ์๋ฉ๋๋ค.\t์ ์ด\t์ผํฐ๋ฅผ\t์ด๋ฉด\t์๋์ฐ\t์๋จ์\t๋ง์ดํฌ,\t์์น,\t์นด๋ฉ๋ผ\t๋๋\t์์คํ
\t์ค๋์ค๋ฅผ\t์ฌ์ฉ\t์ค์ธ\t์ฑ์\tํ์ํ๋\tํ๋๊ฐ\tํฌํจ๋ \t์\t์์ต๋๋ค.\tํด๋น\tํ๋๋ฅผ\tํด๋ฆญํ์ฌ\t์ถ๊ฐ\t์ ๋ณด๊ฐ\t์์\t์\t์๋\t๊ฐ์ธ์ ๋ณด\t๋ณดํธ\t์๋์ฐ๋ฅผ\t์ด\t์\t์์ต๋๋ค(macOS\t13.3\t์ด์).\t์๋ฆผ\t์ผํฐ\t๋ฉ๋ด\t๋ง๋์\t์ค๋ฅธ์ชฝ\t๋์์\t๋ ์ง์\t์๊ฐ์\tํด๋ฆญํ์ฌ\t์๋ฆผ\t์ผํฐ๋ฅผ\t์ด๋ฉด\t์์ ฏ์\t๋ณด๊ณ \t๋์น\t์๋ฆผ์\tํ์ธํ \t์\t์์ต๋๋ค.\t์๋ฆผ\t์ผํฐ\t์ฌ์ฉํ๊ธฐ๋ฅผ\t์ฐธ์กฐํ์ญ์์ค.\tMac ๋ฐ์คํฌํ ์์๋ณด๊ธฐ ํ๋ฉด ์๋จ์๋ ๋ฉ๋ด ๋ง๋๊ฐ ์๊ณ ํ๋จ์๋ Dock์ด ์์ต๋๋ค. ์ค๊ฐ์ ๋ฐ์คํฌํ์ด๋ผ๊ณ ํฉ๋๋ค. ๋ฐ์คํฌํ์ ์์
์ ์ํํ๋ ๊ณต๊ฐ์
๋๋ค. ๋คํฌ ํ๋ฉด ๋ชจ๋๋ก ์ค์ ๋ Mac ๋ฐ์คํฌํ์ ์ด๋์ด ์์์ ์ฑ ์๋์ฐ, Dock ๋ฐ ๋ฉ๋ด ๋ง๋๊ฐ ํ์๋จ. ๋ฐ์คํฌํ ์ฌ์ง ๋ณ๊ฒฝํ๊ธฐ ๋ค๋ฅธ macOS ๋ฐ์คํฌํ ์ฌ์ง(๋ค์ด๋ด๋ฏน์ ๊ฒฝ์ฐ ํ๋ฃจ ์ข
์ผ ์๋์ผ๋ก ๋ณ๊ฒฝ๋จ)์ ์ ํํ๊ฑฐ๋ ์ฌ์ฉ์์ ์ฌ์ง์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. Mac์์ ๋ฐฐ๊ฒฝํ๋ฉด ์ฌ์ฉ์ํํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ๋ฐ์คํฌํ ํ๋ฉด ๋ชจ๋ ๋ณ๊ฒฝํ๊ธฐ ๋ฉ๋ด ๋ง๋, ๋ฐ์คํฌํ ์ฌ์ง, Dock ๋ฐ ๋ด์ฅ ์ฑ์ ๋ํด ๋ผ์ดํธ ๋ชจ๋ ๋๋ ๋คํฌ ๋ชจ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋ผ์ดํธ ๋ชจ๋ ๋๋ ๋คํฌ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ๋ฐ์คํฌํ์์ ์๋ฆผ ์ฌ์ฉํ๊ธฐ ์๋ฆผ์ ๋ฐ์คํฌํ์ ์ค๋ฅธ์ชฝ ์๋จ์ ํ์๋๋ฉฐ ์์ ๋ ์ด๋ฒคํธ, ์์ ์ด๋ฉ์ผ ๋๋ ๋ฉ์์ง ๋ฑ์ ๋ํด ์๋ ค์ค๋๋ค. ์๋ฆผ์์ ๋ฐ๋ก ๋ฏธ๋ฆฌ ์๋ฆผ์ ์์ฒญํ๊ณ ๋ฉ์์ง์ ๋ต์ฅํ๋ ๋ฑ์ ๋์์ ์ํํ ์ ์์ต๋๋ค. ์๋ฆผ์ด ํ์๋๋ ๋ฐฉ์๊ณผ ์๊ธฐ๋ฅผ ์ฌ์ฉ์ํํ ์ ์์ต๋๋ค. ์์
์ ์ง์คํด์ผ ํ ๋ ์๋ฆผ์ ์ผ์ ์ ์งํ๋ ค๋ฉด ์ง์ค ๋ชจ๋๋ฅผ ์ผ์ญ์์ค. ๋ฐ์คํฌํ์ ํ์ผ ์ ๋ฆฌํ๊ธฐ ๋ฐ์คํฌํ์์ ํ์ผ์ ํธ๋ฆฌํ๊ฒ ์ ๋ฆฌํ๋ ค๋ ๊ฒฝ์ฐ ์คํ์ ์ฌ์ฉํ๋ฉด ๋ฐ์คํฌํ์ ํ์ชฝ ๋ฉด์ ๋ฐ๋ผ ์ ํ๋ณ ๋๋ ๊ธฐํ ๊ธฐ์ค๋ณ๋ก ํ์ผ์ ๊น๋ํ๊ฒ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ๋ฐ์คํฌํ์ ํ์ผ์ ์ถ๊ฐํ ๋๋ง๋ค ํด๋น ํ์ผ์ด ์คํ์ผ๋ก ์๋ ์ด๋ํฉ๋๋ค. ๋ฐ์คํฌํ ์คํ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.', metadata={'page': 1, 'source': '1.pdf'}),
Document(page_content='๋๋ก ํค๋ณด๋ ๋จ์ถํค๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ฉ๋ด ๋ง๋์์ Siri๋ฅผ ํด๋ฆญํ์ญ์์ค. ๋ณด์ด์ง ์๋ ๊ฒฝ์ฐ ์ ์ด ์ผํฐ ์ค์ ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐํ ์ ์์ต๋๋ค. Touch Bar์์ Siri๋ฅผ ํญํ์ญ์์ค(Mac์ Touch Bar๊ฐ ์๋ ๊ฒฝ์ฐ). โSiri์ผโ ๋๋ โSiriโ๋ผ๊ณ ๋งํ์ญ์์ค(์ด ์ต์
์ด ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ Siri ๋ฐ Spotlight ์ค์ ์์ ์ผ์ ธ ์๋ ๊ฒฝ์ฐ). โSiri์ผโ ๋๋ โSiriโ๊ฐ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ ๋ฐ ์ธ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํ๋ ค๋ฉด Apple ์ง์ ๋ฌธ์ ๋ชจ๋ Apple ๊ธฐ๊ธฐ์์ Siri ์ฌ์ฉํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. โ9์์ ๋ฏธํ
์ฝ์ ์ก์โ ๋๋ โ์ด์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ์ด๋ ์ด?โ์ ๊ฐ์ด ์์ฒญํ์ญ์์ค. Siri๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ฐธ์กฐ. ์์น ์๋น์ค๊ฐ ์ผ์ ธ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์์ฒญ ์ ๊ธฐ๊ธฐ์ ์์น๋ฅผ ํ์
ํฉ๋๋ค. ์ด ์ต์
์ ์์คํ
์ค์ ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ฑ์ด Mac์ ์์น๋ฅผ ๊ฐ์งํ๋๋ก ํ์ฉํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Siri ๋๊ธฐ Mac์์ Apple ๋ฉ๋ด > ์์คํ
์ค์ ์ ์ ํํ ๋ค์, ์ฌ์ด๋๋ฐ์์ Siri ๋ฐ Spotlight๋ฅผ ํด๋ฆญํ์ญ์์ค. (์๋๋ก ์คํฌ๋กคํด์ผ ํ ์ ์์ต๋๋ค.) ์ค๋ฅธ์ชฝ์์, โSiri์๊ฒ ์์ฒญํ๊ธฐโ๋ฅผ ๋์ญ์์ค. ๊ฐ์กฑ ๊ณต์ ๊ทธ๋ฃน์ ๊ฐ์กฑ ๋ํ์ธ ๊ฒฝ์ฐ ์๋
์ ๋ํด ์คํฌ๋ฆฐ ํ์์ ์ค์ ํ์ฌ Siri ๋ฐ ๋ฐ์์ฐ๊ธฐ์ ๋ํ ์ ๊ทผ์ ์ ํํ ์ ์์ต๋๋ค. ์คํฌ๋ฆฐ ํ์์์ ์ฑ ์ ํ ์ค์ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Mac์ ์๋ฆผ ์ผํฐ ์ฌ์ฉํ๊ธฐ Mac์ ์๋ฆผ ์ผํฐ์์ ๋์น ์๋ฆผ์ ํ์ธํ ์ ์๊ณ , ์์ ฏ์ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํ์ ์ค๋ฅธ์ชฝ์์ ์ฝ์, ์์ผ, ๋ ์จ, ์ธ๊ธฐ ํค๋๋ผ์ธ ๋ฑ์ ๋ณผ ์ ์์ต๋๋ค. ์๋ฆผ ์ผํฐ์ ์๋ฆผ ๋ฐ ์์ ฏ์ด ์์. Mac์ ์๋ฆผ ์ผํฐ์์ ์๋ฆผ ์ด๊ธฐ ๋๋ ๋ซ๊ธฐ Mac์์ ๋ค์ ์ค ํ๋๋ฅผ ์ํํ์ญ์์ค. ์๋ฆผ ์ผํฐ ์ด๊ธฐ: ๋ฉ๋ด ๋ง๋์์ ๋ ์ง ๋ฐ ์๊ฐ์ ํด๋ฆญํ๊ฑฐ๋ ํธ๋ํจ๋์ ์ค๋ฅธ์ชฝ ๊ฐ์ฅ์๋ฆฌ์์ ๋ ์๊ฐ๋ฝ์ ์ฌ์ฉํ์ฌ ์ผ์ชฝ์ผ๋ก ์ธ์ด๋๊ธฐ์ญ์์ค. ์๋ฆผ ์ผํฐ ๋ซ๊ธฐ: ๋ฐ์คํฌํ์์ ์๋ฌด ๊ณณ์ด๋ ํด๋ฆญํ๊ณ ๋ฉ๋ด ๋ง๋์์ ๋ ์ง ๋ฐ ์๊ฐ์ ํด๋ฆญํ๊ฑฐ๋, ํธ๋ํจ๋์ ์ค๋ฅธ์ชฝ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ํฅํด ๋ ์๊ฐ๋ฝ์ ์ฌ์ฉํ์ฌ ์ค๋ฅธ์ชฝ์ผ๋ก ์ธ์ด๋๊ธฐ์ญ์์ค.', metadata={'page': 1, 'source': '2.pdf'})]}
query์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ง๋ฌธ, result ์๋ ์์ฑ๋ ๋ต๋ณ, source_documents๋ ์ฌ์ฉ์์ ์ง๋ฌธ์ ํ์ฉํด์ ๋ฌธ์์์ ๊ฒ์๋ ๋ถ๋ถ๋ค ์ ๋๋ค. ์์ฑ๋ ๋ต๋ณ์ ํ๋ฒ ์ดํด๋ณผ๊น์?
'์ ์ด ์ผํฐ๋ Mac์์ ์์ฃผ ์ฌ์ฉํ๋ ํญ๋ชฉ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์์คํ ์ค์ ์์ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ ์ด ์ผํฐ์๋ ํญ์ ํ์๋๋ ๋ชจ๋๊ณผ ๋ฉ๋ด ๋ง๋์ ์ถ๊ฐํ ์ ์๋ ๋ชจ๋์ด ์์ต๋๋ค. ์ ์ด ์ผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์์ ์ ๋น ๋ฅด๊ฒ ์ํํ ์ ์์ต๋๋ค.' |
๋จ ์ฝ๋ ๋ช ์ค ๋ง์ผ๋ก๋ ๋ฌธ์ ๊ธฐ๋ฐ์ QA๋ฅผ ๊ตฌ์ถํ ์ ์์์ต๋๋ค.
๋ค๋ฅธ ์ง๋ฌธ๋ ํด๋ด
๋๋ค.
์์ฐ์ค๋ฌ์ด ๋ต๋ณ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์
๋ ฅํ ๋ฌธ์์ ๊ด๊ณ์๋ ์ง๋ฌธ์ ํ๋ฉด ์๋์ ๊ฐ์ด ์๋ตํฉ๋๋ค.
์ด๋ฒ ์์ ์์๋ LangChain ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ์ฑ๋ด์ ์์ฑํ์ต๋๋ค.
์ด๋ฒ ์์ ์์ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ python ์คํฌ๋ฆฝํธ๋ก ์์ฑํ์ฌ ํฐ๋ฏธ๋์์ ์คํํ๋ฉด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ง๋ฌธ์ ๋ํ ์๋ต์ ์์ฑํ ์ ์์ต๋๋ค.
๋ฌธ์ ๊ธฐ๋ฐ ์ฑ๋ด์ ๋จ ๋ช ์ค์ ์ฝ๋๋ก๋ง ์์ฑํ ์ ์์ด์ LangChain์ ํธ๋ฆฌํจ์ ๋๋ ์ ์์์ต๋๋ค. ๊ณผ๊ฑฐ์๋ ์์ฐ์ด ์ฒ๋ฆฌ ๋ถ์ผ๋ ์ ๋ฌธ๊ฐ๋ค์ ์์ญ์ด์์ง๋ง, ์ด์ ๋ ๋ค์ํ ์ฌ๋๋ค์ด ํ์ฉํ ์ ์๋ ํธ๋ฆฌํ ๋๊ตฌ๋ค์ด ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. LangChain์ ์ด๋ฌํ ๋๊ตฌ ์ค ํ๋๋ก, ์ฌ์ฉ์ ์นํ์ ์ธ API์ ์์ธํ ๋ฌธ์๋ฅผ ํตํด ์ ์ํ๊ฒ ๊ฐ๋ฐํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฌธ์ ๊ธฐ๋ฐ ์ฑ๋ด์ ๊ตฌํํ๋ ๊ฒ ์ธ์๋ LangChain์ ์ฌ์ฉํ์ฌ ํ
์คํธ ๋ถ๋ฅ, ๊ฐ์ ๋ถ์, ์์ฝ ๋ฑ ๋ค์ํ ์์ฐ์ด ์ฒ๋ฆฌ ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๋ฐ์๋ค์ LangChain์ ์ฌ์ฉํ์ฌ ์ง์ ์ปค์คํ
๋ชจ๋ธ์ ๊ตฌ์ถํ๊ณ ํ๋ จ์ํฌ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์์ ๋ง์ ํนํ๋ ์์ฐ์ด ์ฒ๋ฆฌ ์๋ฃจ์
์ ๋ง๋ค ์ ์์ต๋๋ค.
์ค๋ ์๊ฐํ ๋ถ๋ถ์ LangChain์์๋ ๊ทนํ ์ผ๋ถ๋ถ์ด๊ณ , ๊ฐ๋ฐํ ์ ์๋ ์๋น์ค๋ค์ด ๋ฌด๊ถ๋ฌด์งํฉ๋๋ค. ๋จธ๋ฆฟ์์์ ๋งด๋๊ณ ์๋ ์์ด๋์ด๊ฐ ์๋ค๋ฉด LangChain์ ํ์ฉํ์ฌ ์คํํด๋ณด๋ ๊ฒ์ ์ด๋จ๊น์?
OpenAI์ API์ LangChain์ ํ์ฉํ์ฌ ๋ค์ํ ์์ด์ ํธ๋ฅผ ์ง์ ์์ฑํด๋ณผ ์ ์์ต๋๋ค. ์๋ ์ฟก๋ถ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์
https://python.langchain.com/docs/expression_language/cookbook/
์ด๋ฒ ์์ ์์ ์ฌ์ฉํ ์ ์ฒด์ฝ๋๋ ์๋ ๋งํฌ์์ ๋ค์ด๋ก๋ ๋ฐ์ผ์ค ์ ์์ต๋๋ค.
https://github.com/jang-hs/PDF-RetrievalQA-Example