SAP HANA Cloud Vector Engine은 SAP HANA Cloud 데이터베이스에 완전히 통합된 vector store입니다.
Setup
이 노트북 전체에서 사용되는 다른 패키지들과 함께langchain-hana 외부 통합 패키지를 설치하세요.
Credentials
SAP HANA 인스턴스가 실행 중인지 확인하세요. 환경 변수에서 자격 증명을 로드하고 연결을 생성하세요:Initialization
HanaDB vector store를 초기화하려면 데이터베이스 연결과 embedding 인스턴스가 필요합니다. SAP HANA Cloud Vector Engine은 외부 및 내부 embedding을 모두 지원합니다.
-
Using External Embeddings
-
Using Internal Embeddings
VECTOR_EMBEDDING() 함수를 사용하여 SAP HANA에서 직접 embedding을 계산할 수 있습니다. 이를 활성화하려면 내부 모델 ID로 HanaInternalEmbeddings 인스턴스를 생성하고 이를 HanaDB에 전달하세요. HanaInternalEmbeddings 인스턴스는 HanaDB와 함께 사용하도록 특별히 설계되었으며 다른 vector store 구현과 함께 사용하기 위한 것이 아닙니다. 내부 embedding에 대한 자세한 내용은 SAP HANA VECTOR_EMBEDDING Function을 참조하세요.
주의: SAP HANA Cloud 인스턴스에서 NLP가 활성화되어 있는지 확인하세요.
HanaDB에 전달하여 vector store를 생성하세요:
Example
샘플 문서 “state_of_the_union.txt”를 로드하고 청크를 생성합니다.Maximal Marginal Relevance Search (MMR)
Maximal marginal relevance는 쿼리와의 유사성과 선택된 문서 간의 다양성을 최적화합니다. 처음 20개(fetch_k) 항목이 DB에서 검색됩니다. 그런 다음 MMR 알고리즘이 가장 일치하는 2개(k)를 찾습니다.
Creating an HNSW Vector Index
vector index는 vector에 대한 top-k 최근접 이웃 쿼리의 속도를 크게 향상시킬 수 있습니다. 사용자는create_hnsw_index 함수를 사용하여 Hierarchical Navigable Small World (HNSW) vector index를 생성할 수 있습니다.
데이터베이스 수준에서 index를 생성하는 방법에 대한 자세한 내용은 공식 문서를 참조하세요.
- Similarity Function: index의 유사도 함수는 기본적으로 cosine similarity입니다. 다른 유사도 함수(예:
L2distance)를 사용하려면HanaDB인스턴스를 초기화할 때 지정해야 합니다. - Default Parameters:
create_hnsw_index함수에서 사용자가m,ef_construction또는ef_search와 같은 매개변수에 대한 사용자 정의 값을 제공하지 않으면 기본값(예:m=64,ef_construction=128,ef_search=200)이 자동으로 사용됩니다. 이러한 값은 사용자 개입 없이 합리적인 성능으로 index가 생성되도록 보장합니다.
Basic Vectorstore Operations
Advanced filtering
기본 값 기반 필터링 기능 외에도 더 고급 필터링을 사용할 수 있습니다. 아래 표는 사용 가능한 필터 연산자를 보여줍니다.| Operator | Semantic |
|---|---|
$eq | Equality (==) |
$ne | Inequality (!=) |
$lt | Less than (<) |
$lte | Less than or equal (<=) |
$gt | Greater than (>) |
$gte | Greater than or equal (>=) |
$in | Contained in a set of given values (in) |
$nin | Not contained in a set of given values (not in) |
$between | Between the range of two boundary values |
$like | Text equality based on the “LIKE” semantics in SQL (using ”%” as wildcard) |
$contains | Filters documents containing a specific keyword |
$and | Logical “and”, supporting two or more operands |
$or | Logical “or”, supporting two or more operands |
$ne, $gt, $gte, $lt, $lte로 필터링
$between, $in, $nin으로 필터링
$like로 텍스트 필터링
$contains로 텍스트 필터링
$and, $or로 결합 필터링
Using a VectorStore as a retriever in chains for retrieval augmented generation (RAG)
Standard tables vs. “custom” tables with vector data
기본 동작으로 embedding을 위한 테이블은 3개의 열로 생성됩니다:- Document의 텍스트를 포함하는
VEC_TEXT열 - Document의 metadata를 포함하는
VEC_META열 - Document 텍스트의 embedding vector를 포함하는
VEC_VECTOR열
- embedding의 텍스트/컨텍스트를 위한
NCLOB또는NVARCHAR타입의 열 - metadata를 위한
NCLOB또는NVARCHAR타입의 열 - embedding vector를 위한
REAL_VECTOR타입의 열
Filter Performance Optimization with Custom Columns
유연한 metadata 값을 허용하기 위해 모든 metadata는 기본적으로 metadata 열에 JSON으로 저장됩니다. 사용된 metadata 키와 값 타입 중 일부가 알려진 경우, 키 이름을 열 이름으로 하는 대상 테이블을 생성하고 specific_metadata_columns 목록을 통해 HanaDB 생성자에 전달하여 대신 추가 열에 저장할 수 있습니다. 이러한 값과 일치하는 metadata 키는 삽입 중에 특수 열로 복사됩니다. 필터는 specific_metadata_columns 목록의 키에 대해 metadata JSON 열 대신 특수 열을 사용합니다.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.