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

Langchain Eseo Liteulibeoleul Sayonghaneun Bangbeob Eun Mueos Ibnikka



LangChain은 개발자가 인간과 상호 작용하는 데 사용할 수 있는 LLM(대형 언어 모델)을 구축할 수 있는 프레임워크입니다. 기계는 이러한 모델을 구축하는 데 필요한 모든 라이브러리와 종속성을 제공하므로 LangChain을 사용하여 기계와 상호 작용하기 위해 인간의 언어를 배워야 합니다.

이 게시물은 LangChain에서 검색기를 사용하는 과정을 보여줍니다.

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

리트리버는 모델과 인간 사이의 인터페이스 역할을 하므로 자연어로 제공되는 입력을 사용하여 원하는 출력을 얻을 수 있습니다. 벡터 저장소는 정보/데이터를 가져오거나 추출하는 데 사용할 수 있는 데이터를 저장하는 데 사용됩니다.







그러나 검색기는 이러한 데이터베이스보다 더 일반적입니다. 이는 어떠한 데이터도 저장하지 않으며 사용자에 대한 데이터를 가져오거나 검색하는 데만 사용됩니다. LangChain을 통해 검색기를 구축하고 사용하는 과정을 배우려면 다음 단계를 살펴보십시오.



1단계: 모듈 설치
먼저 LangChain과 같은 필수 모듈을 설치하여 프로세스를 계속 진행하기 위한 라이브러리와 종속성을 가져옵니다.



설치하다 랭체인





검색기가 저장소에서 데이터를 가져오도록 데이터베이스 데이터에 사용할 수 있는 Chromdb 벡터 저장소를 설치합니다.

설치하다 크로마디비



이제 OpenAI 프레임워크를 설치하여 검색기를 구축하기 전에 텍스트 임베딩을 사용하기 위한 라이브러리를 가져옵니다.

설치하다 개방하다

필요한 모든 모듈을 설치한 후 OpenAI API 키를 사용하여 환경을 설정하기만 하면 됩니다.

우리를 수입하다
가져오기 겟패스

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

2단계: 데이터 세트 업로드
이제 다음 코드를 실행하여 “파일 선택” 버튼을 클릭하고 로컬 시스템에서 문서나 파일을 업로드합니다.

google.colab 가져오기 파일에서
업로드됨 = files.upload ( )

3단계: 라이브러리 가져오기
LangChain에서 '와 같은 검색기를 구축하고 사용하는 데 필요한 라이브러리를 가져옵니다. 목록 ', ' 콜백 ', 그리고 더 많은:

abc에서 ABC 가져오기, 추상 메서드
import Any, List를 입력하여
langchain.schema 가져오기 문서에서
langchain.callbacks.manager에서 콜백 가져오기

4단계: 한 줄 인덱스 생성 생성
이 단계에서는 필수 라이브러리를 가져와서 벡터 저장소를 형성하기 위한 데이터를 가져오는 데 사용할 수 있는 검색기에 대한 인덱스를 생성합니다.

langchain.chains에서 RetrievalQA 가져오기
langchain.llms에서 OpenAI 가져오기

여기서는 다음을 사용하여 데이터를 로드합니다. 텍스트로더() 2단계에서 업로드한 파일 경로를 사용하여 메서드를 사용합니다.

langchain.document_loaders에서 TextLoader 가져오기
로더 = TextLoader ( 'state_of_the_union.txt' , 부호화 = 'utf8' )

라이브러리 가져오기 VectorstoreIndexCreator 데이터베이스에 대한 인덱스를 구축하기 위해 LangChain에서:

langchain.indexes에서 VectorstoreIndexCreator 가져오기

정의 색인 VectorstoreIndexCreator() 메서드를 사용하는 변수 짐을 싣는 사람 변하기 쉬운:

인덱스 = VectorstoreIndexCreator ( ) .from_loaders ( [ 짐을 싣는 사람 ] )

문서에서 데이터를 가져와 인덱스를 테스트하는 쿼리를 적용합니다.

쿼리 = '젤렌스키 대통령은 연설에서 무엇을 말했습니까?'
index.query ( 질문 )

어떤 데이터베이스에 해당 인덱스가 있는지에 대한 세부 정보를 가져옵니다. 색인 다음 코드를 사용합니다.

index.벡터스토어

다음 코드는 인덱스, 해당 유형 및 데이터베이스에 대한 모든 세부 정보를 설명합니다.

index.Vectorstore.as_retriever ( )

문서 이름을 사용하려면 source 인수를 사용하여 문서 요약을 요청하는 query() 메서드와 함께 인덱스를 사용하세요.

index.query ( '이 문서의 데이터에 대한 일반 요약' , 검색자_kwargs = { 'search_kwargs' : { '필터' : { '원천' : 'state_of_the_union.txt' } } } )

5단계: 임베딩 생성
임베딩을 생성하기 위해 문서를 로드하고 벡터 저장소를 사용하여 텍스트를 숫자 형식으로 저장합니다.

문서 = loader.load ( )

다음을 사용하여 삽입 프로세스를 시작합니다. text_splitter 청크 크기 및 중첩 인수를 사용하여:

langchain.text_splitter에서 CharacterTextSplitter 가져오기
# 검색기를 사용하기 위해 text_splitter를 사용하여 문서의 작은 덩어리를 만듭니다.
text_splitter = CharacterTextSplitter ( 청크_크기 = 1000 , 덩어리_겹침 = 0 )
텍스트 = text_splitter.split_documents ( 서류 )

LangChain에서 가져올 수 있는 OpenAIEmbeddings() 메서드를 적용합니다.

langchain.embeddings에서 OpenAIEmbeddings 가져오기
임베딩 = OpenAIE임베딩 ( )

문서에서 생성된 임베딩을 저장하려면chromdb 저장소를 사용하십시오.

langchain.Vectorstores에서 Chroma 가져오기
db = Chroma.from_documents ( 텍스트, 임베딩 )

6단계: 검색기 테스트
임베딩이 생성되어 데이터베이스에 저장되면 검색 변수를 정의하기만 하면 됩니다.

검색기 = db.as_retriever ( )

OpenAI() 함수와 검색기를 인수로 사용하여 RetrievalQA() 메서드를 사용하여 체인을 호출합니다.

qa = 검색QA.from_chain_type ( ㅋㅋㅋ =오픈AI ( ) , 체인_유형 = '물건' , 리트리버 =리트리버 )

다음을 사용하여 검색기를 테스트하기 위한 입력을 제공합니다. 질문 qa.run() 메소드 내부의 변수:

쿼리 = '젤렌스키 대통령은 연설에서 무엇을 말했습니까?'
qa.run ( 질문 )

간단히 사용자 정의 VectorstoreIndexCreator () 인수를 사용하여 다른 값을 설정합니다.

index_creator=VectorstoreIndexCreator (
벡터스토어_cls =크로마,
삽입 =OpenAI임베딩 ( ) ,
text_splitter =CharacterTextSplitter ( 청크_크기 = 1000 , 덩어리_겹침 = 0 )
)

이것이 LangChain에서 리트리버를 시작하는 과정에 관한 모든 것입니다.

결론

LangChain에서 리트리버를 사용하려면 OpenAI 환경을 설정하는 데 필요한 종속성을 설치한 다음 문서를 업로드하여 리트리버를 테스트하면 됩니다. 그런 다음 추상 기본 클래스 또는 ABC 라이브러리를 사용하여 검색기를 구축한 다음 데이터베이스에 대한 인덱스를 생성하여 데이터를 검색합니다. 문서에 대한 임베딩을 구성하고 검색기를 실행하여 데이터베이스에서 비교 가능한 결과를 얻습니다. 이번 포스팅은 LangChain에서 리트리버를 사용하는 과정을 자세히 설명했습니다.