FAISS
Chroma
Pinecone
Weaviate
(기타: Qdrant, Milvus 등)
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
# 1. 문서 로딩 및 쪼개기
loader = TextLoader('example.txt')
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = splitter.split_documents(documents)
# 2. 임베딩 임포트 & 벡터DB 생성
embedding = OpenAIEmbeddings()
vector_db = Chroma.from_documents(docs, embedding)
# 3. Retriever, LLM, QA Chain 결합
retriever = vector_db.as_retriever()
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
# 4. 질문
result = qa_chain({"query": "이 문서는 어떤 내용을 포함하고 있나요?"})
print(result["result"])
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain.llms import OpenAI
# 1. 메모리 객체 생성
memory = ConversationBufferMemory()
# 2. ConversationChain에 메모리 적용
conversation = ConversationChain(
llm=OpenAI(),
memory=memory,
verbose=True
)
# 3. 대화 예시
print(conversation.predict(input="안녕, 너는 누구야?"))
print(conversation.predict(input="아까 뭐라고 했지?"))
메모리의 종류로는 BufferMemory, SummaryMemory, EntityMemory, ConversationKGMemory 등 다양합니다.
Vector DB 예제: Chroma, FAISS 등 임베딩 기반 문서 검색 및 QA
Memory 예제: ConversationBufferMemory 등 사용해 지속적 대화, 맥락 추적
공식 문서에서 더 많은 LangChain Examples 도 확인할 수 있습니다.