使用Apache Doris进行实时分析的向量数据库实现
Apache Doris是一种高效的数据仓库,具备实时数据处理能力,支持在线分析处理(OLAP)工作负载。其向量化执行引擎可以支持大规模的数据处理。为了使用这种功能,我们需要使用Doris的Vector Store进行文档存储和检索。
Apache Doris是一款现代化的数据仓库,专为实时分析设计,以其闪电般迅速的数据分析能力而闻名。当被用于OLAP(联机分析处理)时,其性能在ClickBench基准测试中表现优异。此外,由于其超快的向量化执行引擎,它还可以用作快速的向量数据库。
在本篇文章中,我将演示如何使用Apache Doris作为向量存储(Vector Store)。我们会从环境设置开始,并逐步实现向量数据库的文档检索和问答系统。
技术背景介绍
Apache Doris是一种高效的数据仓库,具备实时数据处理能力,支持在线分析处理(OLAP)工作负载。其向量化执行引擎可以支持大规模的数据处理。为了使用这种功能,我们需要使用Doris的Vector Store进行文档存储和检索。
核心原理解析
我们将通过构建一个向量数据库来实现文档的存储和检索。首先,将文档分割成小的文本片段,然后将其转换为向量表示并存储在向量数据库中。通过集成使用Langchain和OpenAI的API,我们可以快速地实现这一过程。
代码实现演示
环境设置
# 安装必要的库
%pip install --upgrade --quiet pymysql sqlalchemy langchain
文档加载与分词
首先,我们需要加载文档并将其分割成小的文本片段以便于向量化处理。
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)
配置与创建向量数据库实例
我们将使用ApacheDorisSettings
来配置Doris实例,并创建向量数据库。
from langchain_community.vectorstores.apache_doris import ApacheDoris, ApacheDorisSettings
from langchain_openai import OpenAIEmbeddings
import os
from getpass import getpass
# 设置API密钥
os.environ["OPENAI_API_KEY"] = getpass()
embeddings = OpenAIEmbeddings()
# 配置Apache Doris设置
settings = ApacheDorisSettings()
settings.port = 9030
settings.host = "172.30.34.130"
settings.username = "root"
settings.password = ""
settings.database = "langchain"
# 创建向量数据库实例
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
docsearch = gen_apache_doris(True, embeddings, settings)
创建问答系统
通过检索在线文档,我们可以使用Langchain的检索问答系统(RetrievalQA)来构建一个QA系统。
from langchain.chains import RetrievalQA
from langchain_openai import OpenAI
# 构建QA系统
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)
应用场景分析
Apache Doris作为向量数据库非常适合于实时的大规模数据分析场景,特别是在需要快速数据检索和问答系统的场合。其高效的向量化处理能力能够显著提高系统的响应速度。
实践建议
- 在配置Apache Doris实例时,确保网络设置正确,以避免网络延迟。
- 定期更新向量数据库以保证数据的及时性。
- 在生产环境中使用时,建议使用更安全的API密钥管理方式。
如果遇到问题欢迎在评论区交流。
—END—

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)