Google El Carro Oracle Operator는 Kubernetes에서 Oracle 데이터베이스를 이식 가능하고, 오픈 소스이며, 커뮤니티 주도적이고, 벤더 종속이 없는 컨테이너 오케스트레이션 시스템으로 실행할 수 있는 방법을 제공합니다. El Carro는 포괄적이고 일관된 구성 및 배포뿐만 아니라 실시간 운영 및 모니터링을 위한 강력한 선언적 API를 제공합니다. El Carro LangChain 통합을 활용하여 Oracle 데이터베이스의 기능을 확장하고 AI 기반 경험을 구축하세요.이 가이드는 El Carro LangChain 통합을 사용하여
ElCarroLoader와 ElCarroDocumentSaver로 langchain 문서를 저장, 로드 및 삭제하는 방법을 다룹니다. 이 통합은 실행 위치에 관계없이 모든 Oracle 데이터베이스에서 작동합니다.
GitHub에서 패키지에 대해 자세히 알아보세요.
시작하기 전에
El Carro Oracle 데이터베이스를 설정하려면 README의 Getting Started 섹션을 완료하세요.🦜🔗 라이브러리 설치
이 통합은 자체langchain-google-el-carro 패키지에 있으므로
설치해야 합니다.
기본 사용법
Oracle Database 연결 설정
다음 변수를 Oracle 데이터베이스 연결 세부 정보로 채우세요.ElCarroEngine Connection Pool
ElCarroEngine은 Oracle 데이터베이스에 대한 connection pool을 구성하여 애플리케이션에서 성공적인 연결을 가능하게 하고 업계 모범 사례를 따릅니다.
테이블 초기화
elcarro_engine.init_document_table(<table_name>)을 통해 기본 스키마의 테이블을 초기화합니다. 테이블 컬럼:
- page_content (타입: text)
- langchain_metadata (타입: JSON)
문서 저장
ElCarroDocumentSaver.add_documents(<documents>)로 langchain 문서를 저장합니다.
ElCarroDocumentSaver 클래스를 초기화하려면 다음 2가지가 필요합니다:
elcarro_engine-ElCarroEngine엔진의 인스턴스.table_name- langchain 문서를 저장할 Oracle 데이터베이스 내 테이블의 이름.
문서 로드
ElCarroLoader.load() 또는 ElCarroLoader.lazy_load()로 langchain 문서를 로드합니다.
lazy_load는 반복 중에만 데이터베이스를 쿼리하는 generator를 반환합니다.
ElCarroLoader 클래스를 초기화하려면 다음이 필요합니다:
elcarro_engine-ElCarroEngine엔진의 인스턴스.table_name- langchain 문서를 저장할 Oracle 데이터베이스 내 테이블의 이름.
쿼리를 통한 문서 로드
테이블에서 문서를 로드하는 것 외에도 SQL 쿼리에서 생성된 view에서 문서를 로드할 수도 있습니다. 예를 들어:문서 삭제
ElCarroDocumentSaver.delete(<documents>)로 Oracle 테이블에서 langchain 문서 목록을 삭제합니다.
기본 스키마(page_content, langchain_metadata)를 가진 테이블의 경우
삭제 기준은 다음과 같습니다:
목록에 document가 존재하여 다음을 만족하는 경우 row가 삭제되어야 합니다:
document.page_content가row[page_content]와 같음document.metadata가row[langchain_metadata]와 같음
고급 사용법
사용자 정의 문서 page content 및 metadata로 문서 로드
먼저 기본이 아닌 스키마를 가진 예제 테이블을 준비하고 임의의 데이터로 채웁니다.ElCarroLoader의 기본 매개변수로 langchain 문서를 로드하면
로드된 문서의 page_content는 테이블의 첫 번째 컬럼이 되고, metadata는 다른 모든 컬럼의 key-value 쌍으로 구성됩니다.
ElCarroLoader를 초기화할 때 content_columns와 metadata_columns를 설정하여
로드하려는 content와 metadata를 지정할 수 있습니다.
content_columns: 문서의page_content에 작성할 컬럼.metadata_columns: 문서의metadata에 작성할 컬럼.
content_columns의 컬럼 값들은 공백으로 구분된 문자열로 결합되어
로드된 문서의 page_content가 되고, 로드된 문서의 metadata는 metadata_columns에 지정된 컬럼의 key-value 쌍만 포함합니다.
사용자 정의 page content 및 metadata로 문서 저장
사용자 정의 metadata 필드가 있는 테이블에 langchain 문서를 저장하려면 먼저ElCarroEngine.init_document_table()을 통해 해당 테이블을 생성하고
원하는 metadata_columns 목록을 지정해야 합니다. 이 예제에서 생성된 테이블은 다음 테이블 컬럼을 갖습니다:
- content (타입: text): 과일 설명 저장용.
- type (타입 VARCHAR2(200)): 과일 타입 저장용.
- weight (타입 INT): 과일 무게 저장용.
- extra_json_metadata (타입: JSON): 과일의 기타 metadata 정보 저장용.
elcarro_engine.init_document_table()에서 다음 매개변수를 사용할 수 있습니다:
table_name: langchain 문서를 저장할 Oracle 데이터베이스 내 테이블의 이름.metadata_columns: 필요한 metadata 컬럼 목록을 나타내는sqlalchemy.Column목록.content_column: langchain 문서의page_content를 저장할 컬럼 이름. 기본값:"page_content", "VARCHAR2(4000)"metadata_json_column: langchain 문서의 추가 JSONmetadata를 저장할 컬럼 이름. 기본값:"langchain_metadata", "VARCHAR2(4000)".
ElCarroDocumentSaver.add_documents(<documents>)로 문서를 저장합니다. 이 예제에서 볼 수 있듯이,
document.page_content는content컬럼에 저장됩니다.document.metadata.type은type컬럼에 저장됩니다.document.metadata.weight는weight컬럼에 저장됩니다.document.metadata.organic은extra_json_metadata컬럼에 JSON 형식으로 저장됩니다.
사용자 정의 page content 및 metadata로 문서 삭제
ElCarroDocumentSaver.delete(<documents>)를 통해 사용자 정의 metadata 컬럼이 있는 테이블에서 문서를 삭제할 수도 있습니다. 삭제 기준은 다음과 같습니다:
목록에 document가 존재하여 다음을 만족하는 경우 row가 삭제되어야 합니다:
document.page_content가row[page_content]와 같음document.metadata의 모든 metadata 필드k에 대해document.metadata[k]가row[k]와 같거나document.metadata[k]가row[langchain_metadata][k]와 같음
row에는 있지만document.metadata에는 없는 추가 metadata 필드가 없음.
더 많은 예제
완전한 코드 예제는 demo_doc_loader_basic.py와 demo_doc_loader_advanced.py를 참조하세요.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.