跳到主要內容
Open In ColabOpen on GitHub

OceanbaseVectorStore

本筆記本涵蓋如何開始使用 Oceanbase 向量資料庫。

設定

若要存取 Oceanbase 向量儲存,您需要部署獨立的 OceanBase 伺服器:%docker run --name=ob433 -e MODE=mini -e OB_SERVER_IP=127.0.0.1 -p 2881:2881 -d quay.io/oceanbase/oceanbase-ce:4.3.3.1-101000012024102216 並安裝 langchain-oceanbase 整合套件。%pip install -qU "langchain-oceanbase" 檢查與 OceanBase 的連線,並設定向量資料的記憶體使用率

from pyobvector import ObVecClient

tmp_client = ObVecClient()
tmp_client.perform_raw_text_sql("ALTER SYSTEM ob_vector_memory_limit_percentage = 30")
<sqlalchemy.engine.cursor.CursorResult at 0x12696f2a0>

初始化

設定嵌入模型的 API 金鑰。此處我們以 DashScopeEmbeddings 為例。當使用 Docker 映像部署 Oceanbase 時,如上所述,只需按照以下腳本設定 hostportuserpassword資料庫名稱。對於其他部署方法,請根據實際情況設定這些參數。%pip install dashscope

import os

from langchain_community.embeddings import DashScopeEmbeddings
from langchain_oceanbase.vectorstores import OceanbaseVectorStore

DASHSCOPE_API = os.environ.get("DASHSCOPE_API_KEY", "")
connection_args = {
"host": "127.0.0.1",
"port": "2881",
"user": "root@test",
"password": "",
"db_name": "test",
}

embeddings = DashScopeEmbeddings(
model="text-embedding-v1", dashscope_api_key=DASHSCOPE_API
)

vector_store = OceanbaseVectorStore(
embedding_function=embeddings,
table_name="langchain_vector",
connection_args=connection_args,
vidx_metric_type="l2",
drop_old=True,
)
API 參考文件:DashScopeEmbeddings

管理向量資料庫

新增項目到向量資料庫

  • TODO:編輯然後執行程式碼儲存格以產生輸出
from langchain_core.documents import Document

document_1 = Document(page_content="foo", metadata={"source": "https://foo.com"})
document_2 = Document(page_content="bar", metadata={"source": "https://bar.com"})
document_3 = Document(page_content="baz", metadata={"source": "https://baz.com"})

documents = [document_1, document_2, document_3]

vector_store.add_documents(documents=documents, ids=["1", "2", "3"])
API 參考文件:Document
['1', '2', '3']

更新向量資料庫中的項目

updated_document = Document(
page_content="qux", metadata={"source": "https://another-example.com"}
)

vector_store.add_documents(documents=[updated_document], ids=["1"])
['1']

從向量資料庫刪除項目

vector_store.delete(ids=["3"])

查詢向量資料庫

一旦您的向量資料庫建立完成,並且新增了相關文件,您很可能希望在執行鏈或代理程式期間查詢它。

直接查詢

可以按如下方式執行簡單的相似性搜尋

results = vector_store.similarity_search(
query="thud", k=1, filter={"source": "https://another-example.com"}
)
for doc in results:
print(f"* {doc.page_content} [{doc.metadata}]")
* bar [{'source': 'https://bar.com'}]

如果您想執行相似性搜尋並接收相應的分數,您可以執行

results = vector_store.similarity_search_with_score(
query="thud", k=1, filter={"source": "https://example.com"}
)
for doc, score in results:
print(f"* [SIM={score:3f}] {doc.page_content} [{doc.metadata}]")
* [SIM=133.452299] bar [{'source': 'https://bar.com'}]

透過轉換為檢索器來查詢

您也可以將向量資料庫轉換為檢索器,以便在您的鏈中更輕鬆地使用。

retriever = vector_store.as_retriever(search_kwargs={"k": 1})
retriever.invoke("thud")
[Document(metadata={'source': 'https://bar.com'}, page_content='bar')]

用於檢索增強生成的使用方式

有關如何將此向量資料庫用於檢索增強生成 (RAG) 的指南,請參閱以下章節

API 參考文件

有關所有 OceanbaseVectorStore 功能和設定的詳細文件,請前往 API 參考文件:https://langchain-python.dev.org.tw/docs/integrations/vectorstores/oceanbase


此頁面是否對您有幫助?