LangChain에서 임베딩을 사용하는 방법

Langchain Eseo Imbeding Eul Sayonghaneun Bangbeob



임베딩은 텍스트 문자열 관련성의 색인이며 부동 소수점 정수의 벡터(목록)로 표현됩니다. 두 벡터 사이의 거리는 이들이 얼마나 밀접하게 연결되어 있는지를 측정하는 역할을 합니다. 거리가 작을수록 관련성이 더 가깝습니다. LangChain Embedding 클래스는 OpenAI, HuggingFace 등과 같은 임베딩 서비스를 위한 인터페이스 역할을 하기 위한 것입니다.

기본 클래스에서 embed_query() 및 embed_documents()의 두 가지 메서드를 제공합니다. 이들 중 첫 번째는 단일 문서에서 작동하는 반면 다른 하나는 여러 문서에서 작동할 수 있습니다.

이 기사는 OpenAI 텍스트 임베딩을 사용하여 LangChain에 임베딩하는 실제 데모를 이해합니다.







예: OpenAI 텍스트 임베딩을 사용하여 단일 입력 텍스트 얻기

첫 번째 그림에서는 단일 텍스트 문자열을 입력하고 이에 대한 OpenAI 텍스트 임베딩을 검색합니다. 프로그램은 필요한 라이브러리를 설치하는 것으로 시작됩니다.



프로젝트에 설치해야 하는 첫 번째 라이브러리는 LangChain입니다. Python 표준 라이브러리와 함께 제공되지 않으므로 별도로 설치해야 합니다. langchain은 PyPi에서 사용할 수 있으므로 터미널에서 pip 명령을 사용하여 쉽게 설치할 수 있습니다. 따라서 다음 명령을 실행하여 LangChain 라이브러리를 설치합니다.



$ 핍 설치 langchain

요구 사항이 충족되는 즉시 라이브러리가 설치됩니다.





또한 OpenAI 모델에 액세스할 수 있도록 프로젝트에 OpenAI 라이브러리를 설치해야 합니다. 이 라이브러리는 pip 명령을 작성하여 시작할 수 있습니다.

$ pip 설치 openai

이제 두 필수 라이브러리가 프로젝트 파일에 설치되었습니다. 필요한 모듈을 가져와야 합니다.



~에서 랭체인. 임베딩 . 개방 수입 OpenAIEmbeddings

수입

. [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

OpenAI 임베딩을 얻으려면 “langchain.embeddings.openai” 패키지에서 OpenAIEmbeddings 클래스를 가져와야 합니다. 그런 다음 API 키를 환경 변수로 설정합니다. 다른 OpenAI 모델에 액세스하려면 비밀 API 키가 필요합니다. 이 키는 OpenAI 플랫폼에서 생성할 수 있습니다. 가입하고 프로필의 '비밀 키 보기' 섹션에서 비밀 키를 얻으십시오. 이 키는 특정 클라이언트의 여러 프로젝트에서 사용할 수 있습니다.

환경 변수는 API 키를 함수에 하드코딩하는 대신 특정 환경에 대한 API 키를 저장하는 데 사용됩니다. 따라서 API 키를 환경 변수로 설정하려면 “os” 모듈을 가져와야 합니다. os.environ() 메서드는 API 키를 환경 변수로 설정하는 데 사용됩니다. 여기에는 이름과 값이 포함됩니다. 우리가 설정한 이름은 'OPENAI_API_KEY'이고 비밀 키는 'value'로 설정됩니다.

모델 = OpenAIEmbeddings ( )

input_text = '시연용입니다.'

결과 = 모델. embed_query ( input_text )

인쇄 ( 결과 )

인쇄 ( 오직 ( 결과 ) )

우리는 이미 OpenAI 임베딩 래퍼와 인터페이스했습니다. 그런 다음 OpenAIEmbedding 클래스의 생성자를 호출합니다. OpenAI는 다양한 임베딩 모델을 제공하지만 비용을 지불해야 합니다. 여기에서는 무료인 OpenAI의 기본 임베딩 모델인 text-embedding-ada-002를 사용합니다. 매개 변수로 모델 이름을 제공하지 않으면 기본 모델이 사용됩니다.

그런 다음 포함을 가져와야 하는 텍스트를 지정합니다. 텍스트는 '이것은 데모용입니다.'로 지정됩니다. input_text 변수에 저장합니다. 그 후, 제공되는 텍스트를 임베딩하는 embed_query() 메서드는 사용되는 모델과 매개변수로 제공되는 임베딩을 검색하기 위한 텍스트 문자열이 있는 input_text로 호출됩니다. 검색된 임베딩은 결과 개체에 할당됩니다.

마지막으로 결과를 보기 위해 Python의 print() 메서드가 있습니다. 표시하려는 값을 저장하는 개체를 print() 메서드에 전달하기만 하면 됩니다. 따라서 이 함수를 두 번 호출합니다. 첫 번째는 부동 숫자 목록을 표시하고 두 번째는 len() 메서드를 사용하여 이러한 값의 길이를 출력합니다.

부동 값 목록은 이러한 값의 길이와 함께 다음 스냅샷에서 볼 수 있습니다.

예: OpenAI 텍스트 임베딩을 사용하여 여러 입력 텍스트/문서 얻기

단일 입력 텍스트에 대한 임베딩을 얻는 것 외에도 여러 입력 문자열에 대해 검색할 수도 있습니다. 이것을 이 그림에 구현합니다.

이전 그림에서 이미 라이브러리를 설치했습니다. 여기에 설치해야 하는 또 다른 라이브러리는 Python의 tiktoken 라이브러리입니다. 설치하려면 터미널에 명령을 작성하십시오.

$ pip 설치 tiktoken

tiktoken 패키지는 바이트 쌍 인코딩 토크나이저입니다. OpenAI 모델과 함께 사용되며 텍스트를 토큰으로 분해합니다. 제공된 문자열이 때때로 지정된 OpenAI 모델에 대해 약간 길기 때문에 사용됩니다. 따라서 텍스트를 분할하여 토큰으로 인코딩합니다. 이제 메인 프로젝트를 진행해 봅시다.

~에서 랭체인. 임베딩 . 개방 수입 OpenAIEmbeddings

모델 = OpenAIEmbeddings ( openai_api_key = 'sk-YOUR_API_KEY'

문자열 = ['
이것 ~이다 ~을 위한 데모. ', ' 이것 ~이다 또한 ~을 위한 데모. ', ' 이것 ~이다 다른 데모 . ', ' 이 하나 ~이다 마지막 . ']

결과 = model.embed_documents(문자열)

인쇄(결과)

인쇄(len(결과))

OpenAIEmbeddings 클래스는 'langchain.embeddings.openai' 패키지에서 가져옵니다. 이전 예제에서는 API 키를 환경 변수로 설정했습니다. 하지만 여기서는 생성자에게 직접 전달합니다. 따라서 여기에서 'os' 모듈을 가져올 필요가 없습니다.

OpenAIEmbeddings인 OpenAI 모델을 호출한 후 여기에 비밀 API 키를 전달합니다. 다음 줄에는 텍스트 문자열이 지정됩니다. 여기에서는 객체 문자열에 4개의 텍스트 문자열을 저장합니다. 이러한 문자열은 '이것은 데모용입니다.', '이 문자열은 데모용이기도 합니다.', '이것은 또 다른 데모 문자열입니다.' 및 '이것은 마지막 문자열입니다.'입니다.

각각을 쉼표로 구분하여 여러 문자열을 지정할 수 있습니다. 이전 인스턴스에서는 embed_text() 메서드가 호출되었지만 단일 텍스트 문자열에 대해서만 작동하므로 여기서는 사용할 수 없습니다. 여러 문자열을 삽입하기 위해 우리가 가지고 있는 방법은 embed_document()입니다. 따라서 지정된 OpenAI 모델과 텍스트 문자열을 인수로 사용하여 호출합니다. 출력은 결과 개체에 보관됩니다. 마지막으로 출력을 표시하기 위해 개체 결과를 매개 변수로 사용하여 Python print() 메서드를 사용합니다. 또한 이러한 부동 값의 길이를 확인하려고 합니다. 따라서 print() 메서드 내에서 len() 메서드를 호출합니다.

검색된 출력은 다음 이미지에 제공됩니다.

결론

이 게시물은 LangChain에 임베딩하는 개념에 대해 논의했습니다. 임베딩이 무엇이며 어떻게 작동하는지 배웠습니다. 여기에 텍스트 문자열을 삽입하는 실제 구현이 나와 있습니다. 우리는 두 개의 삽화를 수행했습니다. 첫 번째 예제는 단일 텍스트 문자열의 임베딩을 검색하는 작업을 수행했으며 두 번째 예제는 OpenAI 임베딩 모델을 사용하여 여러 입력 문자열의 임베딩을 얻는 방법을 이해했습니다.