Deep Lake Vector Store 快速入门¶
可以使用 pip 安装 Deep Lake。
输入 [ ]
已复制!
%pip install llama-index-vector-stores-deeplake
%pip install llama-index-vector-stores-deeplake
输入 [ ]
已复制!
!pip install llama-index
!pip install deeplake
!pip install llama-index !pip install deeplake
接下来,我们导入所需的模块并设置必要的环境变量
输入 [ ]
已复制!
import os
import textwrap
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Document
from llama_index.vector_stores.deeplake import DeepLakeVectorStore
os.environ["OPENAI_API_KEY"] = "sk-********************************"
os.environ["ACTIVELOOP_TOKEN"] = "********************************"
import os import textwrap from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Document from llama_index.vector_stores.deeplake import DeepLakeVectorStore os.environ["OPENAI_API_KEY"] = "sk-********************************" os.environ["ACTIVELOOP_TOKEN"] = "********************************"
我们将把 Paul Graham 的一篇随笔嵌入并存储到本地 Deep Lake Vector Store 中。首先,我们将数据下载到一个名为 data/paul_graham
的目录中
输入 [ ]
已复制!
import urllib.request
urllib.request.urlretrieve(
"https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt",
"data/paul_graham/paul_graham_essay.txt",
)
import urllib.request urllib.request.urlretrieve( "https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt", "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].hash,
)
# load documents documents = SimpleDirectoryReader("./data/paul_graham/").load_data() print( "Document ID:", documents[0].doc_id, "Document Hash:", documents[0].hash, )
Document ID: a98b6686-e666-41a9-a0bc-b79f0d666bde Document Hash: beaa54b3e9cea641e91e6975d2207af4f4200f4b2d629725d688f272372ce5bb
最后,让我们创建 Deep Lake Vector Store 并用数据填充它。我们使用默认的张量配置,这将创建包含 text (str)
、metadata(json)
、id (str, auto-populated)
、embedding (float32)
的张量。在此处了解更多关于张量可定制性的信息。
输入 [ ]
已复制!
from llama_index.core import StorageContext
dataset_path = "./dataset/paul_graham"
# Create an index over the documents
vector_store = DeepLakeVectorStore(dataset_path=dataset_path, overwrite=True)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
documents, storage_context=storage_context
)
from llama_index.core import StorageContext dataset_path = "./dataset/paul_graham" # Create an index over the documents vector_store = DeepLakeVectorStore(dataset_path=dataset_path, overwrite=True) storage_context = StorageContext.from_defaults(vector_store=vector_store) index = VectorStoreIndex.from_documents( documents, storage_context=storage_context )
Uploading data to deeplake dataset.
100%|██████████| 22/22 [00:00<00:00, 684.80it/s]
Dataset(path='./dataset/paul_graham', tensors=['text', 'metadata', 'embedding', 'id']) tensor htype shape dtype compression ------- ------- ------- ------- ------- text text (22, 1) str None metadata json (22, 1) str None embedding embedding (22, 1536) float32 None id text (22, 1) str None
执行向量搜索¶
Deep Lake 提供了高度灵活的向量搜索和混合搜索选项,在这些教程中有详细讨论。在本快速入门中,我们展示一个使用默认选项的简单示例。
输入 [ ]
已复制!
query_engine = index.as_query_engine()
response = query_engine.query(
"What did the author learn?",
)
query_engine = index.as_query_engine() response = query_engine.query( "What did the author learn?", )
输入 [ ]
已复制!
print(textwrap.fill(str(response), 100))
print(textwrap.fill(str(response), 100))
The author learned that working on things that are not prestigious can be a good thing, as it can lead to discovering something real and avoiding the wrong track. The author also learned that ignorance can be beneficial, as it can lead to discovering something new and unexpected. The author also learned the importance of working hard, even at the parts of the job they don't like, in order to set an example for others. The author also learned the value of unsolicited advice, as it can be beneficial in unexpected ways, such as when Robert Morris suggested that the author should make sure Y Combinator wasn't the last cool thing they did.
输入 [ ]
已复制!
response = query_engine.query("What was a hard moment for the author?")
response = query_engine.query("What was a hard moment for the author?")
输入 [ ]
已复制!
print(textwrap.fill(str(response), 100))
print(textwrap.fill(str(response), 100))
The author experienced a hard moment when one of his programs on the IBM 1401 computer did not terminate. This was a social as well as a technical error, as the data center manager's expression made clear.
输入 [ ]
已复制!
query_engine = index.as_query_engine()
response = query_engine.query("What was a hard moment for the author?")
print(textwrap.fill(str(response), 100))
query_engine = index.as_query_engine() response = query_engine.query("What was a hard moment for the author?") print(textwrap.fill(str(response), 100))
The author experienced a hard moment when one of his programs on the IBM 1401 computer did not terminate. This was a social as well as a technical error, as the data center manager's expression made clear.
从数据库删除项目¶
要查找要删除文档的 ID,可以直接查询底层的 deeplake 数据集
输入 [ ]
已复制!
import deeplake
ds = deeplake.load(dataset_path)
idx = ds.id[0].numpy().tolist()
idx
import deeplake ds = deeplake.load(dataset_path) idx = ds.id[0].numpy().tolist() idx
./dataset/paul_graham loaded successfully.
输出 [ ]
['42f8220e-673d-4c65-884d-5a48a1a15b03']
输入 [ ]
已复制!
index.delete(idx[0])
index.delete(idx[0])