LangChain에서 VectorStoreRetrieverMemory를 사용하는 방법은 무엇입니까?

Langchain Eseo Vectorstoreretrievermemoryleul Sayonghaneun Bangbeob Eun Mueos Ibnikka



대규모 언어 모델 또는 LLM은 LangChain 프레임워크를 사용하여 구축된 자연어 처리 문제에 대한 솔루션입니다. LangChain 모듈은 채팅 모델 또는 LLM을 설계하는 데 필요한 모든 종속성 또는 라이브러리를 제공합니다. 사용자는 모델을 사용하여 벡터 저장소나 데이터베이스에서 데이터를 추출하기 위한 검색기를 설정할 수도 있습니다.

이 가이드에서는 LangChain 프레임워크를 사용하여 VectorStoreRetrieverMemory를 사용하는 방법을 설명합니다.

LangChain에서 VectorStoreRetrieverMemory를 사용하는 방법은 무엇입니까?

VectorStoreRetrieverMemory는 벡터 저장소를 사용하여 메모리에서 정보/데이터를 추출하는 데 사용할 수 있는 LangChain의 라이브러리입니다. 벡터 스토어는 프롬프트나 쿼리에 따라 정보를 효율적으로 추출하기 위해 데이터를 저장하고 관리하는 데 사용할 수 있습니다.







LangChain에서 VectorStoreRetrieverMemory를 사용하는 과정을 배우려면 다음 가이드를 따르십시오.



1단계: 모듈 설치

pip 명령을 사용하여 LangChain을 설치하여 메모리 검색기 사용 프로세스를 시작합니다.



pip 설치 랭체인





의미론적 유사성 검색을 사용하여 데이터를 얻으려면 FAISS 모듈을 설치하십시오.

pip 설치 faiss-gpu



Chroma 데이터베이스를 사용하기 위해 Chromadb 모듈을 설치합니다. 이는 검색기용 메모리를 구축하는 벡터 저장소로 작동합니다.

pip 설치 크로마DB

데이터를 더 작은 청크로 변환하여 토큰을 생성하는 데 사용할 수 있는 또 다른 모듈 tiktoken을 설치해야 합니다.

pip 설치 틱토큰

해당 환경을 사용하여 LLM 또는 챗봇을 구축하기 위해 해당 라이브러리를 사용하려면 OpenAI 모듈을 설치하십시오.

pip 설치 openai

환경 설정 OpenAI 계정의 API 키를 사용하여 Python IDE 또는 노트북에서:

수입

수입 getpass

. [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API 키:' )

2단계: 라이브러리 가져오기

다음 단계는 LangChain에서 메모리 검색기를 사용하기 위해 이러한 모듈에서 라이브러리를 가져오는 것입니다.

~에서 랭체인. 프롬프트 수입 프롬프트 템플릿

~에서 날짜 시간 수입 날짜 시간

~에서 랭체인. LLMS 수입 오픈AI

~에서 랭체인. 임베딩 . 개방하다 수입 OpenAI임베딩

~에서 랭체인. 쇠사슬 수입 컨버세이션체인

~에서 랭체인. 메모리 수입 벡터스토어리트리버메모리

3단계: 벡터 저장소 초기화

이 가이드에서는 FAISS 라이브러리를 가져온 후 Chroma 데이터베이스를 사용하여 입력 명령을 사용하여 데이터를 추출합니다.

수입 파이스

~에서 랭체인. 의사 저장소 수입 인메모리Docstore
#데이터베이스 또는 벡터 저장소 구성을 위한 라이브러리 가져오기
~에서 랭체인. 벡터스토어 수입 FAISS

#임베딩 및 텍스트를 생성하여 벡터 저장소에 저장
embedding_size = 1536년
색인 = 파이스. 인덱스플랫L2 ( embedding_size )
embedding_fn = OpenAI임베딩 ( ) . embed_query
벡터스토어 = FAISS ( embedding_fn , 색인 , 인메모리Docstore ( { } ) , { } )

4단계: 벡터 스토어의 지원을 받는 리트리버 구축

대화에서 가장 최근 메시지를 저장하고 채팅의 맥락을 파악하기 위한 메모리를 구축하세요.

리트리버 = 벡터스토어. as_retriever ( search_kwargs = 딕셔너리 ( 케이 = 1 ) )
메모리 = 벡터스토어리트리버메모리 ( 리트리버 = 리트리버 )

메모리. save_context ( { '입력' : '나는 피자 먹는 걸 좋아해요' } , { '산출' : '환상적이다' } )
메모리. save_context ( { '입력' : '나는 축구를 잘해요' } , { '산출' : '좋아요' } )
메모리. save_context ( { '입력' : '나는 정치를 좋아하지 않는다' } , { '산출' : '확신하는' } )

사용자가 기록과 함께 제공한 입력을 사용하여 모델의 메모리를 테스트합니다.

인쇄 ( 메모리. 로드_메모리_변수 ( { '즉각적인' : '어떤 스포츠를 봐야 하지?' } ) [ '역사' ] )

5단계: 체인에서 리트리버 사용

다음 단계는 OpenAI() 메서드를 사용하여 LLM을 구축하고 프롬프트 템플릿을 구성하여 체인과 함께 메모리 검색기를 사용하는 것입니다.

ㅋㅋㅋ = 오픈AI ( 온도 = 0 )
_DEFAULT_TEMPLATE = '''인간과 기계의 상호작용이다.
시스템은 컨텍스트를 사용하여 세부 정보가 포함된 유용한 정보를 생성합니다.
시스템에 답이 없으면 단순히 답이 없다고 말합니다.

대화의 중요한 정보:
{역사}
(텍스트가 관련성이 없으면 사용하지 마세요)

현재 채팅:
인간: {입력}
일체 포함:'''

즉각적인 = 프롬프트 템플릿 (
입력_변수 = [ '역사' , '입력' ] , 주형 = _DEFAULT_TEMPLATE
)
#매개변수 값을 사용하여 ConversationChain()을 구성합니다.
대화_위드_요약 = 컨버세이션체인 (
ㅋㅋㅋ = ㅋㅋㅋ ,
즉각적인 = 즉각적인 ,
메모리 = 메모리 ,
말 수가 많은 = 진실
)
대화_위드_요약. 예측하다 ( 입력 = '안녕하세요, 제 이름은 페리예요. 무슨 일이에요?' )

산출

명령을 실행하면 체인이 실행되고 모델 또는 LLM이 제공한 답변이 표시됩니다.

벡터 저장소에 저장된 데이터를 기반으로 하는 프롬프트를 사용하여 대화를 시작하세요.

대화_위드_요약. 예측하다 ( 입력 = '내가 가장 좋아하는 스포츠는 무엇입니까?' )

이전 메시지는 모델이 메시지의 맥락을 이해하는 데 사용할 수 있는 모델의 메모리에 저장됩니다.

대화_위드_요약. 예측하다 ( 입력 = '내가 가장 좋아하는 음식은 뭐예요' )

메모리 검색기가 채팅 모델과 어떻게 작동하는지 확인하려면 이전 메시지 중 하나에서 모델에 제공된 답변을 얻으세요.

대화_위드_요약. 예측하다 ( 입력 = '어떻게 내 이름?' )

모델은 메모리에 저장된 데이터의 유사성 검색을 사용하여 출력을 올바르게 표시했습니다.

이것이 LangChain의 벡터 저장소 검색기를 사용하는 것입니다.

결론

LangChain의 벡터 저장소 기반 메모리 검색기를 사용하려면 모듈과 프레임워크를 설치하고 환경을 설정하기만 하면 됩니다. 그런 다음 모듈에서 라이브러리를 가져와 Chroma를 사용하여 데이터베이스를 구축한 다음 프롬프트 템플릿을 설정합니다. 대화를 시작하고 이전 메시지와 관련된 질문을 통해 메모리에 데이터를 저장한 후 검색기를 테스트합니다. 이 가이드는 LangChain에서 VectorStoreRetrieverMemory 라이브러리를 사용하는 과정을 자세히 설명했습니다.