Spanner는 무제한 확장성과 보조 인덱스, 강력한 일관성, 스키마, SQL과 같은 관계형 의미론을 결합하여 하나의 쉬운 솔루션으로 99.999%의 가용성을 제공하는 고도로 확장 가능한 데이터베이스입니다.이 노트북은 Spanner를 사용하여
SpannerLoader와 SpannerDocumentSaver로 langchain 문서를 저장, 로드 및 삭제하는 방법을 다룹니다.
GitHub에서 패키지에 대해 자세히 알아보세요.
시작하기 전에
이 노트북을 실행하려면 다음을 수행해야 합니다: 이 노트북의 런타임 환경에서 데이터베이스에 대한 액세스를 확인한 후, 다음 값을 입력하고 예제 스크립트를 실행하기 전에 셀을 실행하세요.🦜🔗 라이브러리 설치
이 통합은 자체langchain-google-spanner 패키지에 있으므로 설치해야 합니다.
☁ 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를 사용하는 경우 여기에서 설정 지침을 확인하세요.
기본 사용법
문서 저장
SpannerDocumentSaver.add_documents(<documents>)로 langchain 문서를 저장합니다. SpannerDocumentSaver 클래스를 초기화하려면 다음 3가지가 필요합니다:
instance_id- 데이터를 로드할 Spanner 인스턴스.database_id- 데이터를 로드할 Spanner 데이터베이스 인스턴스.table_name- langchain 문서를 저장할 Spanner 데이터베이스 내의 테이블 이름.
Spanner에서 문서 쿼리하기
Spanner 테이블에 연결하는 방법에 대한 자세한 내용은 Python SDK 문서를 확인하세요.테이블에서 문서 로드
SpannerLoader.load() 또는 SpannerLoader.lazy_load()로 langchain 문서를 로드합니다. lazy_load는 반복 중에만 데이터베이스를 쿼리하는 generator를 반환합니다. SpannerLoader 클래스를 초기화하려면 다음이 필요합니다:
instance_id- 데이터를 로드할 Spanner 인스턴스.database_id- 데이터를 로드할 Spanner 데이터베이스 인스턴스.query- 데이터베이스 dialect의 쿼리.
문서 삭제
SpannerDocumentSaver.delete(<documents>)로 테이블에서 langchain 문서 목록을 삭제합니다.
고급 사용법
커스텀 client
기본적으로 생성되는 client는 default client입니다.credentials와 project를 명시적으로 전달하려면 커스텀 client를 생성자에 전달할 수 있습니다.
Document Page Content 및 Metadata 커스터마이징
loader는 특정 데이터 컬럼에서 page content가 있는 Documents 목록을 반환합니다. 다른 모든 데이터 컬럼은 metadata에 추가됩니다. 각 행은 하나의 document가 됩니다.page content 형식 커스터마이징
SpannerLoader는page_content라는 컬럼이 있다고 가정합니다. 이러한 기본값은 다음과 같이 변경할 수 있습니다:
text(공백으로 구분된 문자열 연결)가 됩니다. 사용자가 지정할 수 있는 다른 형식으로는 text, JSON, YAML, CSV가 있습니다.
metadata 형식 커스터마이징
SpannerLoader는 JSON 데이터를 저장하는langchain_metadata라는 metadata 컬럼이 있다고 가정합니다. metadata 컬럼은 기본 dictionary로 사용됩니다. 기본적으로 다른 모든 컬럼 데이터가 추가되며 원래 값을 덮어쓸 수 있습니다. 이러한 기본값은 다음과 같이 변경할 수 있습니다:
JSON metadata 컬럼 이름 커스터마이징
기본적으로 loader는langchain_metadata를 기본 dictionary로 사용합니다. 이는 Document의 metadata에 대한 기본 dictionary로 사용할 JSON 컬럼을 선택하도록 커스터마이징할 수 있습니다.
커스텀 staleness
기본 staleness는 15초입니다. 이는 더 약한 bound를 지정하여 커스터마이징할 수 있습니다(주어진 timestamp 기준으로 모든 읽기를 수행하거나 과거의 주어진 duration 기준으로 수행).data boost 활성화
기본적으로 loader는 추가 비용이 발생하고 추가 IAM 권한이 필요하므로 data boost를 사용하지 않습니다. 그러나 사용자는 이를 활성화할 수 있습니다.커스텀 client
기본적으로 생성되는 client는 default client입니다.credentials와 project를 명시적으로 전달하려면 커스텀 client를 생성자에 전달할 수 있습니다.
SpannerDocumentSaver의 커스텀 초기화
SpannerDocumentSaver는 커스텀 초기화를 허용합니다. 이를 통해 사용자는 Document가 테이블에 저장되는 방식을 지정할 수 있습니다. content_column: Document의 page content에 대한 컬럼 이름으로 사용됩니다. 기본값은page_content입니다.
metadata_columns: 이러한 metadata는 Document의 metadata에 키가 존재하는 경우 특정 컬럼에 저장됩니다.
metadata_json_column: 특수 JSON 컬럼의 컬럼 이름입니다. 기본값은 langchain_metadata입니다.
Spanner의 커스텀 스키마 초기화
SpannerDocumentSaver에는 커스텀 스키마로 문서를 저장할 새 테이블을 생성하는init_document_table 메서드가 있습니다.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.