使用 MyScaleDB 和 BentoML 构建基于开源云托管 LLM 的 RAG 应用程序

检索增强生成(RAG)经常用于开发定制的人工智能应用程序,包括聊天机器人推荐系统和其他个性化工具。该系统利用向量数据库和大型语言模型(LLMs)的优势提供高质量的结果。

选择适合任何RAG模型的LLM非常重要,需要考虑成本、隐私问题和可扩展性等因素。商业LLMs如OpenAI的GPT-4Google的Gemini非常有效,但可能价格昂贵并引发数据隐私问题。一些用户更喜欢开源LLMs,因为它们具有灵活性和成本节省的优势,但它们需要大量资源进行微调和部署,包括GPU和专用基础设施。此外,使用本地设置管理模型更新和可扩展性可能具有挑战性。

更好的解决方案是选择一个开源LLM并将其部署在云上。这种方法提供了必要的计算能力和可扩展性,而无需承担本地托管的高成本和复杂性。它不仅节省了初始基础设施成本,还减少了维护方面的担忧。

让我们探索一种类似的方法,使用云托管的开源LLMs和可扩展的向量数据库来开发一个应用程序。

工具和技术

开发这个基于RAG的人工智能应用程序需要几个工具,包括:

  • BentoML:BentoML是一个开源平台,简化了将机器学习模型部署为生产就绪API的过程,确保可扩展性和易管理性。
  • LangChain:LangChain是一个使用LLMs构建应用程序的框架。它提供了易于集成和定制的模块化组件。
  • MyScaleDB:MyScaleDB是一个高性能、可扩展的数据库,针对高效的数据检索和存储进行了优化,支持高级查询功能。

在本教程中,我们将使用LangChain的WikipediaLoader模块从维基百科提取数据,并在此数据上构建一个LLM。

注意:您可以在MyScale示例存储库上找到完整的Python笔记本

准备工作

设置环境

通过打开终端并输入以下命令,开始设置您的环境以在系统中使用BentoML、MyScaleDB和LangChain:

pip install bentoml langchain clickhouse-connect

执行这条命令会在您的系统中安装这三个软件包。安装完成后,您就可以编写代码并开发RAG应用程序了。

加载数据

首先,从langchain_community.document_loaders.wikipedia模块中导入WikipediaLoader。您将使用这个加载器来获取与"阿尔伯特·爱因斯坦"相关的维基百科文档。

from langchain_community.document_loaders.wikipedia import WikipediaLoader
loader = WikipediaLoader(query="Albert Einstein")

# 加载文档
docs = loader.load()

# 显示第一个文档的内容
print(docs[0].page_content)

这里使用load方法来检索“阿尔伯特·爱因斯坦”文档,并使用print方法打印第一个文档的内容以验证加载的数据。

将文本拆分为块

langchain_text_splitters导入CharacterTextSplitter,将所有页面的内容连接成一个字符串,然后将文本拆分为可管理的块。

from langchain_text_splitters import CharacterTextSplitter
# 将文本拆分为块
text = ' '.join([page.page_content.replace('\\t', ' ') for page in docs])
text_splitter = CharacterTextSplitter(
   separator="\\n",
   chunk_size=400,
   chunk_overlap=100,
   length_function=len,
   is_separator_regex=False,
)
texts = text_splitter.create_documents([text])
splits 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值