Bootstrap

利用Epsilla实现AI文本向量化查询


老铁们,AI文本向量化的技术点其实不难,但我发现许多人在实现上遇到了一些小坑,今天我就来聊聊如何用Epsilla这个开源的向量数据库来解决向量查询的问题。说白了就是我们要用Epsilla结合OpenAI的嵌入功能来完成文本的相似度查询。好,下面我们深入一探究竟。

技术背景介绍

Epsilla是一个开源的向量数据库,采用了高级的并行图遍历技术来进行向量索引,这让我们的向量查询分分钟高效无比。为了让Epsilla发挥最大威力,这里我们还集成了OpenAI的嵌入服务。

原理深度解析

Epsilla通过并行图遍历技术优化了向量索引的速度和精度,而OpenAI的预训练模型可以轻松将文本转换为嵌入向量。两者结合可以创建一个强大的文本查询系统。说白了就是利用图论+优化模型,解决文本搜索的精度与速度问题。

实战代码演示

下面我来个实战代码演示,带你一步步地感受这波操作的丝滑。

首先,确保你已经安装了pyepsilla以及langchain-community。如果还没有,可以使用以下命令:

!pip install pyepsilla
!pip install -qU langchain-community

接下来,我们需要获取OpenAI的API Key:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")

然后导入必要的库:

from langchain_community.vectorstores import Epsilla
from langchain_openai import OpenAIEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter

加载和分割文档:

loader = TextLoader("../../how_to/state_of_the_union.txt")
documents = loader.load()
documents = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0).split_documents(documents)

创建OpenAI的嵌入实例:

embeddings = OpenAIEmbeddings()

初始化Epsilla客户端并进行文档存储:

from pyepsilla import vectordb

client = vectordb.Client()
vector_store = Epsilla.from_documents(
    documents,
    embeddings,
    client,
    db_path="/tmp/mypath",
    db_name="MyDB",
    collection_name="MyCollection",
)

最后,执行查询并获取结果:

query = "What did the president say about Ketanji Brown Jackson"
docs = vector_store.similarity_search(query)
print(docs[0].page_content)

优化建议分享

在这里分享个小建议:如果你发现查询结果不太理想,可能需要调整chunk_sizechunk_overlap的参数。此外,建议使用代理服务提高查询的稳定性,比如可以考虑使用一些云服务来托管。

补充说明和总结

在这波操作中,我一直使用 https://yunwu.ai 提供一站式大模型解决方案,特别适合我这种需要快速搭建和测试的需求。

今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~

—END—

;