LangChain에서 에이전트와 벡터 스토어를 결합하는 방법은 무엇입니까?

Langchain Eseo Eijeonteuwa Begteo Seuto Eoleul Gyeolhabhaneun Bangbeob Eun Mueos Ibnikka



LangChain은 언어 모델을 설계하는 프레임워크입니다. 엄청난 양의 데이터가 이러한 모델을 자연어로 학습시킵니다. 이러한 데이터 세트를 관리하기 위해 Chroma 등과 같은 많은 데이터베이스나 벡터 저장소가 있습니다. 에이전트와 벡터 저장소를 결합하면 모델이 다양한 도메인의 데이터에서 더 나은 성능을 발휘합니다. LangChain을 사용하면 많은 벡터 저장소를 사용하여 언어 모델이나 챗봇을 훈련할 수 있습니다.

빠른 개요

이 게시물에는 다음이 표시됩니다.







에이전트를 사용하여 LangChain에서 구조화된 출력을 반환하는 방법



방법 1: 에이전트와 벡터 저장소 결합



방법 2: 에이전트를 라우터로 사용





방법 3: 다중 홉 벡터 저장소와 함께 에이전트 사용

결론



에이전트를 사용하여 LangChain에서 구조화된 출력을 반환하는 방법은 무엇입니까?

개발자는 에이전트를 사용하여 모델에 대한 훈련 데이터가 포함된 데이터베이스 사이를 라우팅합니다. 에이전트는 모든 단계를 저장하여 전체 프로세스의 청사진을 갖습니다. 에이전트에는 프로세스를 완료하기 위해 이러한 모든 활동을 수행하는 도구가 있습니다. 사용자는 에이전트를 사용하여 다양한 데이터 저장소에서 데이터를 가져와 모델을 다양하게 만들 수도 있습니다.

LangChain에서 에이전트와 벡터 저장소를 결합하는 과정을 배우려면 나열된 단계를 따르십시오.

1단계: 프레임워크 설치

먼저 에이전트와 벡터 저장소를 결합하기 위한 LangChain 모듈과 해당 종속성을 설치합니다.

pip 설치 랭체인

이 가이드에서는 다양한 위치나 테이블에 데이터를 저장할 수 있는 Chroma 데이터베이스를 사용합니다.

pip 설치 크로마DB

데이터를 더 잘 이해하려면 tiktoken 토크나이저를 사용하여 대용량 파일을 작은 청크로 분할하세요.

pip 설치 틱토큰

OpenAI는 LangChain 프레임워크에서 대규모 언어 모델을 구축하는 데 사용할 수 있는 모듈입니다.

pip 설치 openai

2단계: OpenAI 환경

여기서 다음 단계는 환경을 설정하다 OpenAI 공식 계정에서 추출할 수 있는 OpenAI의 API 키를 사용합니다.

수입
수입 getpass

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

이제 나중에 사용할 수 있도록 로컬 시스템의 데이터를 Google Collaboratory에 업로드하세요.

~에서 Google. 수입 파일

업로드됨 = 파일. 업로드 ( )

3단계: 벡터 저장소 만들기

이 단계에서는 업로드된 데이터를 저장하기 위한 벡터 저장소인 작업의 첫 번째 구성 요소를 구성합니다. 벡터 저장소를 구성하려면 LangChain의 다양한 종속성에서 가져올 수 있는 라이브러리가 필요합니다.

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

#Vector는 필요한 데이터베이스 또는 벡터를 얻기 위해 종속성을 저장합니다.

~에서 랭체인. 벡터스토어 수입 크로마

#텍스트 분할기는 큰 텍스트를 작은 덩어리로 변환하는 데 사용됩니다.

~에서 랭체인. text_splitter 수입 문자텍스트분배기

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

~에서 랭체인. document_loaders 수입 웹베이스로더

~에서 랭체인. 쇠사슬 수입 검색QA


ㅋㅋㅋ = 오픈AI ( 온도 = 0 )

4단계: 경로 설정

라이브러리를 가져온 후 벡터 저장소에 데이터를 저장하기 전에 벡터 저장소에 액세스하기 위한 경로를 설정하기만 하면 됩니다.

~에서 pathlib 수입

관련 부품 = [ ]
~을 위한 ~에 ( '.' ) . 순수한 ( ) . 부속 :
관련_부품. 추가 ( )
만약에 관련 부품 [ - : ] == [ '랭체인' , '문서' , '모듈' ] :
부서지다
#각 데이터베이스의 경로를 설정하는 루프 내부의 조건문
doc_path = str ( ( *관련_부분 ) / 'state_of_the_union.txt' )

5단계: 데이터 로드 및 분할

이제 데이터를 로드하고 더 작은 덩어리로 분할하여 가독성과 이해도를 높이세요. 텍스트를 숫자로 변환하여 벡터 공간을 만들고 이를 Chorma 데이터베이스에 저장하여 데이터 임베딩을 만듭니다.

~에서 랭체인. document_loaders 수입 텍스트로더

# 해당 경로에서 데이터 세트를 로드하고 더 작은 청크를 데이터베이스에 저장

짐을 싣는 사람 = 텍스트로더 ( doc_path )

서류 = 짐을 싣는 사람. ( )

text_splitter = 문자텍스트분배기 ( 청크_크기 = 2000 , 덩어리_겹침 = 0 )

텍스트 = text_splitter. 분할_문서 ( 서류 )

#텍스트를 숫자로 변환하고 데이터베이스에 임베딩을 저장합니다.

임베딩 = OpenAI임베딩 ( )

문서 검색 = 크로마. from_documents ( 텍스트 , 임베딩 , 컬렉션_이름 = '연합 상태' )

6단계: 리트리버 만들기

에이전트와 벡터 저장소를 결합하려면 LangChain 프레임워크의 RetrievalQA() 메서드를 사용하여 검색기를 생성해야 합니다. 이 검색 방법은 데이터베이스 작업을 위한 도구로 에이전트를 사용하여 벡터 저장소에서 데이터를 가져오는 데 권장됩니다.

state_of_union = 검색QA. from_chain_type (

ㅋㅋㅋ = ㅋㅋㅋ , 체인_유형 = '물건' , 리트리버 = 문서검색. as_retriever ( )

)

에이전트를 여러 데이터세트 또는 벡터 저장소와 통합하려면 다른 데이터세트를 로드하세요.

짐을 싣는 사람 = 웹베이스로더 ( 'https://beta.ruff.rs/docs/faq/' )

임베딩 벡터를 사용하여 더 작은 데이터 청크를 생성한 후 러프 데이터 세트를 크로마DB에 저장합니다.

문서 = 짐을 싣는 사람. ( )
러프_텍스트 = text_splitter. 분할_문서 ( 문서 )
러프_db = 크로마. from_documents ( 러프_텍스트 , 임베딩 , 컬렉션_이름 = '주름 옷깃' )
주름 옷깃 = 검색QA. from_chain_type (
ㅋㅋㅋ = ㅋㅋㅋ , 체인_유형 = '물건' , 리트리버 = 러프_db. as_retriever ( )
)

방법 1: 에이전트와 벡터 저장소 결합

정보를 추출하기 위해 에이전트와 벡터 저장소를 결합하는 첫 번째 방법은 다음과 같습니다.

1단계: 도구 구성

이제 벡터 저장소가 구성되었으므로 프로세스의 두 번째 구성 요소인 에이전트를 구축하는 단계로 넘어갑니다. 프로세스에 대한 에이전트를 만들려면 에이전트, 도구 등과 같은 종속성을 사용하여 라이브러리를 가져옵니다.

~에서 랭체인. 자치령 대표 수입 초기화_에이전트
~에서 랭체인. 자치령 대표 수입 에이전트 유형
#에이전트 구축을 위해 LangChain에서 도구 가져오기
~에서 랭체인. 도구 수입 기본 도구
~에서 랭체인. LLMS 수입 오픈AI
#언어 모델 구축을 위해 체인에서 LLMMathChain 가져오기
~에서 랭체인. 쇠사슬 수입 LLMMathChain
~에서 랭체인. 유용 수입 SerpAPI래퍼
~에서 랭체인. 자치령 대표 수입 도구

도구의 이름과 설명으로 이전에 구성한 QA 시스템 또는 검색을 사용하여 에이전트와 함께 사용할 도구를 구성합니다.

도구 = [
도구 (
이름 = '연합 QA 시스템 상태' ,
기능 = state_of_union. 달리다 ,
설명 = '완전한 형식의 질문으로 입력된 로드된 데이터 세트와 관련된 질문에 대한 응답을 제공합니다.' ,
) ,
도구 (
이름 = '러프 QA 시스템' ,
기능 = 주름 옷깃. 달리다 ,
설명 = '완전한 형식의 질문으로 입력된 ruff(python linter)에 대한 질문에 대한 응답을 제공합니다.' ,
) ,
]

2단계: 에이전트 초기화

도구가 구성된 후에는 단순히initializa_agent() 메서드의 인수에 에이전트를 설정하세요. 여기서 사용하는 에이전트는 ZERO_SHOT_REACT_DESCRIPTION 도구, llm(언어 모델) 및 verbose와 함께:

대리인 = 초기화_에이전트 (

도구 , ㅋㅋㅋ , 대리인 = 에이전트 유형. ZERO_SHOT_REACT_DESCRIPTION , 말 수가 많은 = 진실

)

3단계: 에이전트 테스트

인수에 질문이 포함된 run() 메서드를 사용하여 에이전트를 실행하기만 하면 됩니다.

대리인. 달리다 (

'조 바이든 대통령은 연설에서 한자 브라운에 대해 뭐라고 말했나요'

)

다음 스크린샷은 에이전트 메모리에 저장된 관찰을 사용하여 두 데이터 저장소에서 추출된 답변을 표시합니다.

방법 2: 에이전트를 라우터로 사용

두 구성 요소를 결합하는 또 다른 방법은 에이전트를 라우터로 사용하는 것입니다. 다음은 프로세스를 설명합니다.

1단계: 도구 구성

에이전트를 라우터로 사용하는 것은 도구가 출력을 직접 반환하도록 구성되었으므로 RetrievalQA 시스템이 출력을 직접 반환한다는 의미입니다.

도구 = [
#데이터에서 데이터를 가져오기 위한 에이전트를 구축하는 데 필요한 도구 구성
도구 (
이름 = '연합 QA 시스템 상태' ,
기능 = state_of_union. 달리다 ,
설명 = '로드된 데이터 세트와 관련된 질문에 대한 답변을 완전한 질문으로 입력하여 제공합니다.' ,
return_direct = 진실 ,
) ,
도구 (
이름 = '러프 QA 시스템' ,
기능 = 주름 옷깃. 달리다 ,
설명 = 'ruff(파이썬 린터)에 대한 질문에 대한 답변을 완전한 질문으로 입력하여 제공합니다.' ,
return_direct = 진실 ,
) ,
]

2단계: 에이전트 초기화 및 테스트

도구를 설정한 후 초기화_agent() 메서드를 사용하여 라우터로만 사용할 수 있는 에이전트를 설정하기만 하면 됩니다.

대리인 = 초기화_에이전트 (

도구 , ㅋㅋㅋ , 대리인 = 에이전트 유형. ZERO_SHOT_REACT_DESCRIPTION , 말 수가 많은 = 진실

)

다음 명령을 실행하여 Agent.run() 메서드에 입력 질문을 제공하여 에이전트를 테스트합니다.

대리인. 달리다 (

'조 바이든 대통령은 연설에서 한자 브라운에 대해 뭐라고 말했나요'

)

산출

출력 스크린샷에는 에이전트가 RetrievalQA 시스템에서 추출한 데이터 세트에서 질문에 대한 답변을 반환했음이 표시됩니다.

방법 3: 다중 홉 벡터 저장소와 함께 에이전트 사용

개발자가 에이전트와 벡터 저장소를 모두 결합할 수 있는 세 번째 방법은 다중 홉 벡터 저장소 쿼리를 위한 것입니다. 다음 섹션에서는 전체 프로세스를 설명합니다.

1단계: 도구 구성

첫 번째 단계는 평소와 같이 데이터 저장소에서 데이터를 추출하기 위해 에이전트를 구축하는 데 사용되는 도구를 구성하는 것입니다.

도구 = [
도구 (
이름 = '연합 QA 시스템 상태' ,
기능 = state_of_union. 달리다 ,
설명 = '이전 대화의 대명사를 참조하지 않고 완전한 형식의 질문으로 입력하여 로드된 데이터 세트와 관련된 질문에 대한 응답을 제공합니다.' ,
) ,
도구 (
이름 = '러프 QA 시스템' ,
기능 = 주름 옷깃. 달리다 ,
설명 = '이전 대화의 대명사를 참조하지 않고 완전한 형식의 질문으로 입력하여 로드된 데이터 세트와 관련된 질문에 대한 응답을 제공합니다.' ,
) ,
]

2단계: 에이전트 초기화 및 테스트

그런 다음, 에이전트 이름과 함께 초기화_agent() 메소드를 사용하여 에이전트 변수를 빌드하십시오.

대리인 = 초기화_에이전트 (

도구 , ㅋㅋㅋ , 대리인 = 에이전트 유형. ZERO_SHOT_REACT_DESCRIPTION , 말 수가 많은 = 진실

)

다음 코드 블록에는 이러한 질문이 포함되어 있으므로 둘 이상의 측면 또는 기능을 포함하는 다중 홉 질문을 사용하여 에이전트를 실행하십시오.

대리인. 달리다 (

'Ruff는 Python 노트북을 실행하기 위해 어떤 도구를 사용하며 발표자 중 주소에서 해당 도구에 대해 언급한 사람이 있습니까?'

)

산출

다음 스크린샷은 에이전트가 질문의 복잡성을 이해하기 위해 질문을 해결해야 함을 나타냅니다. 프로세스 초기에 업로드한 여러 데이터 저장소에서 QA 시스템이 추출한 답변이 반환되었습니다.

이것이 LangChain에서 에이전트와 벡터 저장소를 결합하는 방법에 관한 것입니다.

결론

LangChain의 벡터 저장소와 에이전트를 결합하려면 환경을 설정하고 데이터 세트를 로드하는 모듈 설치부터 시작하십시오. 먼저 데이터를 더 작은 청크로 분할하여 데이터를 로드하도록 벡터 저장소를 구성한 다음 OpenAI() 메서드를 사용하여 언어 모델을 구축합니다. 다양한 종류의 쿼리에 대한 데이터를 추출하기 위해 벡터 저장소와 통합하도록 에이전트를 구성합니다. 이 글은 LangChain에서 에이전트와 벡터 스토어를 결합하는 과정을 자세히 설명했습니다.