LangChain에서 캐싱 작업을 수행하는 방법은 무엇입니까?

Langchain Eseo Kaesing Jag Eob Eul Suhaenghaneun Bangbeob Eun Mueos Ibnikka



캐싱은 모델에서 가장 최근 또는 자주 사용되는 데이터를 저장하고 가져오는 프로세스이므로 항상 다시 계산할 필요가 없습니다. 텍스트 임베딩을 사용하면 텍스트 데이터를 숫자로 변환할 수 있으며 여기에 캐싱 기술을 적용하면 모델의 효율성을 향상시킬 수 있습니다. LangChain을 사용하면 개발자는 CacheBackedEmbeddings 라이브러리를 사용하여 캐싱 모델을 구축할 수 있습니다.

이 게시물은 LangChain에서 캐싱 작업 과정을 보여줍니다.







LangChain에서 캐싱 작업을 수행하는 방법은 무엇입니까?

텍스트 임베딩 모델에서 LangChain의 캐싱은 벡터 저장소, 메모리 내 데이터 또는 파일 시스템의 데이터 사용과 같은 다양한 데이터 세트를 통해 사용될 수 있습니다. 캐시 방법을 적용하면 출력을 빠르게 얻을 수 있으며 모델은 데이터에 대한 유사성 검색을 보다 효과적으로 적용할 수 있습니다.



LangChain에서 캐싱 작업 프로세스를 배우려면 나열된 단계를 따르십시오.



1단계: 모듈 설치
먼저 필요한 모델을 설치하여 캐싱 작업 프로세스를 시작합니다. 첫 번째 모델은 프로세스에 필요한 모든 라이브러리가 포함된 LangChain입니다.





설치하다 랭체인

FAISS 모듈은 사용자가 제공한 입력을 기반으로 출력을 추출하거나 생성하기 위해 유사성 검색을 수행해야 합니다.



설치하다 faiss-gpu

이 가이드에서 설치해야 하는 마지막 모듈은 OpenAIEmbeddings() 메서드를 사용하여 데이터 임베딩을 생성하는 데 사용할 수 있는 OpenAI입니다.

설치하다 개방하다

모든 모듈을 설치한 후 '를 사용하여 OpenAI 환경에서 API 키를 사용하여 환경을 설정하기만 하면 됩니다. ' 그리고 ' getpass ' 라이브러리:

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

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

2단계: 라이브러리 가져오기
설정이 완료되면 LangChain에서 캐싱 기술을 사용하기 위한 라이브러리를 가져오기만 하면 됩니다.

langchain.storage에서 InMemoryStore 가져오기
langchain.embeddings에서 CacheBackedEmbeddings 가져오기
langchain.storage에서 LocalFileStore 가져오기
langchain.embeddings에서 OpenAIEmbeddings 가져오기
langchain.document_loaders에서 TextLoader 가져오기
langchain.embeddings.openai에서 OpenAIEmbeddings 가져오기
langchain.text_splitter에서 CharacterTextSplitter 가져오기
langchain.Vectorstores에서 FAISS 가져오기

3단계: 캐싱 모델 구축
라이브러리를 가져온 후 OpenAIEmbeddings() 메서드를 호출하여 모델을 빌드하고 변수에 저장하면 됩니다.

기본_embeddings=OpenAIE임베딩 ( )

이제 여러 인수가 포함된 LocalFileStore() 메서드와 CacheBackedEmbeddings() 메서드를 사용하여 캐시를 적용합니다.

fs = 로컬파일스토어 ( './은닉처/' )

cashed_embedder=CacheBackedEmbeddings.from_bytes_store (
기본_임베딩, fs, 네임스페이스 =underlying_embeddings.model
)

단순히 임베딩 목록을 가져오면 현재로서는 임베딩이 목록에 저장되지 않으므로 목록이 비어 있습니다.

목록 ( fs.yield_keys ( ) )

4단계: 벡터 저장소 만들기
파일 라이브러리를 사용하여 로컬 시스템에서 파일을 가져오고 ' 파일 선택 ” 코드를 실행한 후:

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

이제 문서 이름과 함께 TextLoader() 메서드를 사용하여 임베딩을 저장하는 데 사용할 수 있는 벡터 저장소를 생성하기만 하면 됩니다. 그런 다음 청크 크기에 따라 텍스트 분할기 방법을 적용하고 데이터를 더 작은 청크로 분할합니다.

raw_documents=텍스트로더 ( 'state_of_the_union.txt' ) .짐 ( )
text_splitter = CharacterTextSplitter ( 청크_크기 = 1000 , 덩어리_겹침 = 0 )
문서 = text_splitter.split_documents ( raw_documents )

텍스트를 분할한 후 데이터를 디비 유사성 검색 방법을 사용하여 출력을 얻으려면 FAISS 라이브러리를 사용하는 변수:

db = FAISS.from_documents ( 문서, 캐시_임베더 )

이제 데이터베이스에 임베딩 목록을 저장한 후 다시 가져오고 출력을 5개의 인덱스로 제한합니다.

목록 ( fs.yield_keys ( ) ) [ : 5 ]

5단계: 메모리 내 캐싱 사용
다음 캐싱은 InMemoryStore() 메서드를 통해 저장소 변수를 정의하는 데 사용될 수 있습니다.

저장소 = 인메모리스토어 ( )

모델, 저장소 및 네임스페이스를 매개변수로 사용하여 OpenAIEmbeddings() 및 CacheBackedEmbeddings() 메서드를 사용하여 캐싱 모델을 구축합니다.

기본_embeddings=OpenAIE임베딩 ( )
임베더 = CacheBackedEmbeddings.from_bytes_store (
기본_임베딩, 저장, 네임스페이스 =underlying_embeddings.model
)

문서에서 데이터를 가져오기 위해 캐시 임베딩을 사용하지 않고 저장된 문서에 임베딩을 적용합니다.

임베딩 = embedder.embed_documents ( [ '안녕하세요' , '안녕히 가세요' ] )

이제 임베딩에 캐시를 적용하여 문서에서 데이터를 빠르게 가져옵니다.

embeddings_from_cache = embedder.embed_documents ( [ '안녕하세요' , '안녕히 가세요' ] )

캐시 임베딩을 embeddings 변수에 저장하여 embeddings 변수에 캐시된 임베딩이 저장되도록 합니다.

임베딩 == embeddings_from_cache

6단계: 파일 시스템 캐싱 사용
파일 시스템 저장소를 사용하여 test_cache 문서의 포함에 캐싱을 적용하는 마지막 방법은 다음과 같습니다.

fs = 로컬파일스토어 ( './test_cache/' )

임베딩 모델, 데이터 저장소 및 네임스페이스를 매개변수로 사용하여 CacheBackedEmbeddings() 메서드를 사용하여 임베딩을 적용합니다.

embedder2 = CacheBackedEmbeddings.from_bytes_store (
기본_임베딩, fs, 네임스페이스 =underlying_embeddings.model
)

embedder() 메서드를 호출하려면 캐시된 데이터가 저장된 embeddings 변수를 사용하세요.

임베딩 = embedder2.embed_documents ( [ '안녕하세요' , '안녕히 가세요' ] )

이제 매개변수로 언급된 위의 두 세계에 대한 임베딩을 가져옵니다.

목록 ( fs.yield_keys ( ) )

이것이 바로 LangChain에서 캐싱을 구축하고 작업하는 과정에 관한 것입니다.

결론

LangChain에서 임베딩을 위한 캐싱 기술을 사용하려면 FAISS, OpenAI 등과 같은 pip 명령을 사용하여 필요한 모듈을 가져오면 됩니다. 그런 다음 LangChain에서 캐싱을 구축하고 작업하기 위한 라이브러리를 가져옵니다. 다양한 저장소에 저장된 임베딩을 효율적으로 가져옵니다. 개발자는 여러 저장소를 데이터베이스로 사용하여 벡터 저장소, 파일 시스템 또는 메모리 내 저장소와 같은 임베딩을 저장할 수 있습니다. 이 가이드는 LangChain에서 캐싱 작업 과정을 보여주었습니다.