AnalyticDB
AnalyticDB
Alibaba Cloud의 AnalyticDB for PostgreSQL을 LlamaIndex 벡터 스토어로 사용하는 데모예요. 대용량 데이터를 온라인으로 분석하도록 설계된 MPP 데이터 웨어하우스에 벡터를 저장하고 질의하는 흐름을 볼게요.
출처: 문서
본문
AnalyticDB for PostgreSQL은 대용량 데이터를 온라인으로 분석하도록 설계된 MPP(대규모 병렬 처리) 데이터 웨어하우스 서비스입니다.
이 노트북을 실행하려면 클라우드에서 실행 중인 AnalyticDB for PostgreSQL 인스턴스가 필요합니다(common-buy.aliyun.com에서 받을 수 있습니다).
인스턴스를 만든 뒤에는 API 또는 인스턴스 상세 웹페이지의 'Account Management'를 통해 관리자 계정을 만들어야 합니다.
llama-index가 설치돼 있는지 확인해야 합니다:
%pip install llama-index-vector-stores-analyticdb
!pip install llama-index
파라미터 제공
import os
import getpass
# alibaba cloud ram ak and sk:
alibaba_cloud_ak = ""
alibaba_cloud_sk = ""
# instance information:
region_id = "cn-hangzhou" # region id of the specific instance
instance_id = "gp-xxxx" # adb instance id
account = "test_account" # instance account name created by API or 'Account Management' at the instance detail web page
account_password = "" # instance account password
필요 패키지 의존성 import
from llama_index.core import (
VectorStoreIndex,
SimpleDirectoryReader,
StorageContext,
)
from llama_index.vector_stores.analyticdb import AnalyticDBVectorStore
예제 데이터 로드
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
데이터 읽기
# load documents
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()
print(f"Total documents: {len(documents)}")
print(f"First document, id: {documents[0].doc_id}")
print(f"First document, hash: {documents[0].hash}")
print(
"First document, text"
f" ({len(documents[0].text)} characters):\n{'='*20}\n{documents[0].text[:360]} ..."
)
AnalyticDB Vector Store 객체 생성
analytic_db_store = AnalyticDBVectorStore.from_params(
access_key_id=alibaba_cloud_ak,
access_key_secret=alibaba_cloud_sk,
region_id=region_id,
instance_id=instance_id,
account=account,
account_password=account_password,
namespace="llama",
collection="llama",
metrics="cosine",
embedding_dimension=1536,
)
문서로부터 인덱스 구축
storage_context = StorageContext.from_defaults(vector_store=analytic_db_store)
index = VectorStoreIndex.from_documents(
documents, storage_context=storage_context
)
인덱스로 쿼리
query_engine = index.as_query_engine()
response = query_engine.query("Why did the author choose to work on AI?")
print(response.response)
컬렉션 삭제
analytic_db_store.delete_collection()
AnalyticDBVectorStore.from_params로 Alibaba Cloud RAM 자격증명(access key/secret), 인스턴스 정보, namespace·collection 이름, metrics(여기서는 cosine), embedding_dimension을 지정해 스토어를 만들고, 이를 벡터 스토어로 사용해 문서들을 인덱싱합니다.