主题
在本 notebook 中,我们将快速演示如何使用 TairVectorStore。
如果你在 Colab 中打开这个 Notebook,可能需要先安装 LlamaIndex 🦙。
%pip install llama-index-vector-stores-tair!pip install llama-indeximport os
import sys
import logging
import textwrap
import warnings
warnings.filterwarnings("ignore")
# stop huggingface warnings
os.environ["TOKENIZERS_PARALLELISM"] = "false"
# Uncomment to see debug logs
# logging.basicConfig(stream=sys.stdout, level=logging.INFO)
# logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
from llama_index.core import (
GPTVectorStoreIndex,
SimpleDirectoryReader,
Document,
)
from llama_index.vector_stores.tair import TairVectorStore
from IPython.display import Markdown, display设置 OpenAI
首先,让我们添加 openai api key。这将使我们能够访问 openai 以进行嵌入并使用 chatgpt。
import os
os.environ["OPENAI_API_KEY"] = "sk-<your key here>"下载数据
!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(
"Document ID:",
documents[0].doc_id,
"Document Hash:",
documents[0].doc_hash,
)从文档构建索引
让我们使用 GPTVectorStoreIndex 构建向量索引,并以 TairVectorStore 作为其后端。将 tair_url 替换为你的 Tair 实例的实际 URL。
from llama_index.core import StorageContext
tair_url = "redis://{username}:{password}@r-bp****************.redis.rds.aliyuncs.com:{port}"
vector_store = TairVectorStore(
tair_url=tair_url, index_name="pg_essays", overwrite=True
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = GPTVectorStoreIndex.from_documents(
documents, storage_context=storage_context
)查询数据
现在我们可以将该索引作为知识库,并向其提问。
query_engine = index.as_query_engine()
response = query_engine.query("What did the author learn?")
print(textwrap.fill(str(response), 100))response = query_engine.query("What was a hard moment for the author?")
print(textwrap.fill(str(response), 100))删除文档
要从索引中删除文档,请使用 delete 方法。
document_id = documents[0].doc_id
document_idinfo = vector_store.client.tvs_get_index("pg_essays")
print("Number of documents", int(info["data_count"]))vector_store.delete(document_id)info = vector_store.client.tvs_get_index("pg_essays")
print("Number of documents", int(info["data_count"]))删除索引
使用 delete_index 方法删除整个索引。
vector_store.delete_index()print("Check index existence:", vector_store.client._index_exists())