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—

Logo

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

更多推荐