LangChain: Vector Database와 Memory를 활용 예제

calico·2025년 7월 4일

Artificial Intelligence

목록 보기
46/143

1. Vector DB(임베딩 + 검색) 예제


주로 사용되는 Vector DB


  • FAISS

  • Chroma

  • Pinecone

  • Weaviate

  • (기타: Qdrant, Milvus 등)



대표 예제: 문서 질의응답 (Document QA)


  • 아래는 Chroma + OpenAI Embeddings + LangChain Retriever 구현 예시입니다.
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"])



2. 메모리(Memory) 사용 예제


  • LangChain의 Memory는 대화 기록이나 상태를 저장해 LLM이 ‘컨텍스트’를 유지할 수 있게 도와줍니다.

대표 예제: 대화형 챗봇 (ConversationMemory)


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 도 확인할 수 있습니다.



profile
https://velog.io/@corone_hi/posts

0개의 댓글