引言
Apache Doris 是一款现代数据仓库,专注于实时分析,能够在大规模数据上提供飞快的分析能力。作为一个出色的 OLAP 工具,Apache Doris 在 Analytical DBMS 的 ClickBench 基准测试中表现卓越。它的高速向量化执行引擎使其既可以作为数据仓库使用,也可以作为快速的向量数据库。在这篇文章中,我们将深入探讨如何使用 Apache Doris 的向量存储能力,帮助开发者在实时数据分析中如虎添翼。
主要内容
1. 使用 Apache Doris 的准备工作
在开始之前,确保你已经安装以下 Python 包:
%pip install -qU pymysql langchain sqlalchemy
并安装 langchain-community:
%pip install -qU langchain-community
这些库为我们提供了与 Apache Doris 和其他工具集成的必要支持。
2. 加载文档并分割为 Token
你可以从Apache Doris的GitHub仓库中克隆其文档:
git clone https://github.com/apache/doris
在加载文档后,我们将其分割为更小的文本块,以便后续的向量化处理。
from langchain_community.document_loaders import DirectoryLoader, UnstructuredMarkdownLoader
from langchain_text_splitters import TokenTextSplitter
# 加载所有 Markdown 文件
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 作为向量数据库(vectordb)。
from langchain_community.vectorstores.apache_doris import ApacheDoris, ApacheDorisSettings
from langchain_openai import OpenAIEmbeddings
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
# 配置 Apache Doris 设置
settings = ApacheDorisSettings()
settings.port = 9030
settings.host = "172.30.34.130" # 使用API代理服务提高访问稳定性
settings.username = "root"
settings.password = ""
settings.database = "langchain"
embeddings = OpenAIEmbeddings()
docsearch = gen_apache_doris(True, embeddings, settings)
4. 建立 QA 模型并进行查询
我们可以构建一个问答系统来与分析结果进行交互。
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)
常见问题和解决方案
- 网络访问问题:由于某些地区的网络限制,访问 API 时可能需要使用代理服务以提高稳定性。
- 文档更新问题:在加载新文档时,确保
update_vectordb被设为True,以便重建文档的向量嵌入。
总结和进一步学习资源
Apache Doris 提供了强大的实时分析能力,其向量存储功能使得实时数据的检索与分析更加高效。建议参阅以下资料以深入了解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---