Google Memorystore for Redis는 Redis 인메모리 데이터 스토어를 기반으로 하는 완전 관리형 서비스로, 밀리초 미만의 데이터 액세스를 제공하는 애플리케이션 캐시를 구축할 수 있습니다. Memorystore for Redis의 LangChain 통합을 활용하여 데이터베이스 애플리케이션을 확장하고 AI 기반 경험을 구축하세요.이 노트북은 Memorystore for Redis를 사용하여
MemorystoreVectorStore 클래스로 벡터 임베딩을 저장하는 방법을 다룹니다.
GitHub에서 패키지에 대해 자세히 알아보세요.
사전 요구사항
시작하기 전에
이 노트북을 실행하려면 다음을 수행해야 합니다:- Google Cloud Project 생성
- Memorystore for Redis API 활성화
- Memorystore for Redis 인스턴스 생성. 버전이 7.2 이상인지 확인하세요.
🦜🔗 라이브러리 설치
이 통합은 자체langchain-google-memorystore-redis 패키지에 있으므로 설치해야 합니다.
☁ Google Cloud Project 설정
이 노트북 내에서 Google Cloud 리소스를 활용할 수 있도록 Google Cloud 프로젝트를 설정하세요. 프로젝트 ID를 모르는 경우 다음을 시도해보세요:gcloud config list를 실행하세요.gcloud projects list를 실행하세요.- 지원 페이지를 참조하세요: 프로젝트 ID 찾기.
🔐 인증
Google Cloud Project에 액세스하기 위해 이 노트북에 로그인한 IAM 사용자로 Google Cloud에 인증하세요.- Colab을 사용하여 이 노트북을 실행하는 경우 아래 셀을 사용하고 계속 진행하세요.
- Vertex AI Workbench를 사용하는 경우 여기에서 설정 지침을 확인하세요.
기본 사용법
Vector Index 초기화
문서 준비
텍스트는 벡터 스토어와 상호작용하기 전에 처리 및 수치 표현이 필요합니다. 여기에는 다음이 포함됩니다:- 텍스트 로딩: TextLoader는 파일(예: “state_of_the_union.txt”)에서 텍스트 데이터를 가져옵니다.
- 텍스트 분할: CharacterTextSplitter는 임베딩 모델을 위해 텍스트를 더 작은 청크로 나눕니다.
Vector Store에 문서 추가
텍스트 준비 및 임베딩 생성 후, 다음 메서드를 사용하여 Redis 벡터 스토어에 삽입합니다.방법 1: 직접 삽입을 위한 Classmethod
이 접근 방식은 from_documents classmethod를 사용하여 임베딩 생성과 삽입을 단일 단계로 결합합니다:방법 2: 인스턴스 기반 삽입
이 접근 방식은 새로운 또는 기존 RedisVectorStore로 작업할 때 유연성을 제공합니다:- [선택사항] RedisVectorStore 인스턴스 생성: 사용자 정의를 위해 RedisVectorStore 객체를 인스턴스화합니다. 이미 인스턴스가 있는 경우 다음 단계로 진행하세요.
- 메타데이터와 함께 텍스트 추가: 인스턴스에 원시 텍스트와 메타데이터를 제공합니다. 임베딩 생성 및 벡터 스토어 삽입은 자동으로 처리됩니다.
유사도 검색 수행 (KNN)
벡터 스토어가 채워지면 쿼리와 의미적으로 유사한 텍스트를 검색할 수 있습니다. 기본 설정으로 KNN(K-Nearest Neighbors)을 사용하는 방법은 다음과 같습니다:- 쿼리 작성: 자연어 질문이 검색 의도를 표현합니다(예: “What did the president say about Ketanji Brown Jackson”).
- 유사한 결과 검색:
similarity_search메서드는 의미상 쿼리에 가장 가까운 벡터 스토어의 항목을 찾습니다.
범위 기반 유사도 검색 수행
범위 쿼리는 쿼리 텍스트와 함께 원하는 유사도 임계값을 지정하여 더 많은 제어를 제공합니다:- 쿼리 작성: 자연어 질문이 검색 의도를 정의합니다.
- 유사도 임계값 설정: distance_threshold 매개변수는 일치 항목이 관련성이 있다고 간주되기 위해 얼마나 가까워야 하는지 결정합니다.
- 결과 검색:
similarity_search_with_score메서드는 지정된 유사도 임계값 내에 있는 벡터 스토어의 항목을 찾습니다.
Maximal Marginal Relevance (MMR) 검색 수행
MMR 쿼리는 쿼리와 관련성이 있으면서 서로 다양한 결과를 찾아 검색 결과의 중복을 줄이는 것을 목표로 합니다.- 쿼리 작성: 자연어 질문이 검색 의도를 정의합니다.
- 관련성과 다양성의 균형: lambda_mult 매개변수는 엄격한 관련성과 결과의 다양성 촉진 사이의 균형을 제어합니다.
- MMR 결과 검색:
max_marginal_relevance_search메서드는 lambda 설정을 기반으로 관련성과 다양성의 조합을 최적화하는 항목을 반환합니다.
Vector Store를 Retriever로 사용
다른 LangChain 컴포넌트와의 원활한 통합을 위해 벡터 스토어를 Retriever로 변환할 수 있습니다. 이는 여러 가지 장점을 제공합니다:- LangChain 호환성: 많은 LangChain 도구와 메서드는 retriever와 직접 상호작용하도록 설계되었습니다.
- 사용 편의성:
as_retriever()메서드는 벡터 스토어를 쿼리를 단순화하는 형식으로 변환합니다.
정리
Vector Store에서 문서 삭제
때때로 벡터 스토어에서 문서(및 관련 벡터)를 제거해야 할 필요가 있습니다.delete 메서드가 이 기능을 제공합니다.
Vector Index 삭제
기존 벡터 인덱스를 삭제해야 하는 상황이 있을 수 있습니다. 일반적인 이유는 다음과 같습니다:- 인덱스 구성 변경: 인덱스 매개변수를 수정해야 하는 경우 인덱스를 삭제하고 다시 생성해야 하는 경우가 많습니다.
- 스토리지 관리: 사용하지 않는 인덱스를 제거하면 Redis 인스턴스 내의 공간을 확보하는 데 도움이 될 수 있습니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.