大多数关于RAG的教程都是以同样的方式结束的:你最终会得到一个可以正常运行的原型系统,同时还会产生一笔与向量数据库相关的费用——无论是否有人在使用这个数据库,这笔费用都会持续产生。如果再添加一个始终处于运行状态的嵌入服务、一个托管式的LLM接口,以及常见的AWS基础设施,那么在第一个用户出现之前,你就已经需要支付一大笔钱了。

但实际上并不一定非得这样。在本教程中,你将部署一个完全无服务器架构的RAG处理流程,该流程能够处理文档、图片、视频和音频数据,并且当没有人使用它时,其资源消耗会降为零。

所有这些服务都会在你的AWS账户中运行,你的数据也永远不会离开你的基础设施。对于一个规模较小的知识库系统来说,你每月所需的费用大概在2-3美元左右,而远远不会达到300美元

我们将使用RAGStack-Lambda这个开源项目来进行演示。通过本教程的学习,你最终将获得一个已部署好的处理流程系统,其中包括一个控制面板、一个带有来源引用功能的人工智能聊天界面、一个可以嵌入到任何应用程序中的Web组件,以及一个可用于为你的知识库系统提供上下文信息的MCP服务器。

接下来我们将介绍以下内容:

实际费用是多少

在开始任何操作之前,我们先来谈谈费用问题——因为了解成本结构才是整个学习过程的核心所在。

RAG处理流程通常包含两个费用阶段:数据导入阶段(一次性处理你的文档)和后续使用阶段(长期查询这些文档)。

大多数平台都会收取固定的月费,而无论你处于哪个阶段。但无服务器架构则有所不同:数据导入阶段需要支付一定的费用,之后所有资源的使用量都会降为零。

数据导入阶段:一次性产生的费用

当你上传文档时,会涉及到以下几个步骤:文本提取(针对PDF文件和图片进行OCR处理)、嵌入信息的生成、元数据的提取,以及文档的存储。下面是各项服务的具体费用情况:

TextExtract(OCR):这是数据导入阶段中最昂贵的环节,但它仅适用于需要提取文本的扫描PDF文件和图片。对于纯文本文件、HTML格式文件、CSV文件以及其他基于文本的格式,这一步骤是完全不必要的。

Textract针对标准文本检测服务,每1,000页收取约1.50美元的费用。如果你上传500页扫描后的PDF文件,费用约为0.75美元;而如果一次性上传数千页扫描文件,费用可能会达到5-10美元。不过一旦你的文档被处理完毕,除非你再次添加新的文档,否则不会再产生这些费用。

Bedrock Embeddings (Nova Multimodal):该服务会将你的内容转换为向量格式,以便进行语义搜索。其收费标准低得惊人:

  • 文本:每1,000个输入字符收取0.00002美元

  • 图片:每张图片收取0.00115美元

  • 视频/音频:每分钟收取0.00200美元

举个例子来说,如果你有1,500份文本文件,每份文件平均包含2,500个字符,那么整个转换过程的总费用约为0.08美元。一个包含500张图片的知识库,转换成本仅为0.58美元;即使是包含文本、图片以及几小时视频的混合数据集,整个转换过程的费用也远远低于2美元。需要注意的是,这些费用只需支付一次——除非你后来添加或更新了文档,否则无需再次支付。

Bedrock LLM (元数据提取):RAGStack会使用大语言模型来分析每份文档,并自动提取结构化的元数据。对于每份文档来说,这一过程只需要进行几次推理计算,而且使用的模型是Nova Lite或类似的模型。按照每百万输入/输出字符0.06美元/0.24美元的收费标准来计算,处理1,500份文档的总费用远低于1美元

S3向量存储:用于存储转换后的向量数据。按照每GB每月0.06美元的标准收费,一个包含1,500份文档、每份文档的向量维度为1,024的知识库,所占用的存储空间几乎可以忽略不计——每月的费用仅为几美分而已。

S3文档存储:你的原始文档可以存储在标准的S3系统中。其收费标准更低,仅为每GB每月0.023美元

DynamoDB:用于存储文档的元数据及处理状态。由于采用按请求计费的模式,因此在数据导入阶段需要支付费用,而在数据存储阶段则无需额外付费。对于初次导入大量数据的情况,所需费用也仅为几美分而已。

举个具体的例子:如果你上传200份文本文件(PDF、HTML或markdown格式),整个数据导入过程的总费用很可能低于1美元;而如果你上传1,000份需要进行OCR处理的扫描PDF文件,一次性费用可能会达到5-8美元。有时会看到有人提到7-10美元这个数字,那其实是针对初次上传大量文件、且需要进行大量OCR处理的情况而言的。

扩展性:从零开始实现规模扩张的优势

一旦你的文档被导入系统,后续的处理流程就会进入等待状态,并不会立即开始运行。下面是各种查询操作的费用明细:

Lambda函数:调用次数和执行时长都会被计入费用。免费 tier允许每月进行100万次请求;对于个人或小型团队使用的知识库来说,很可能永远都用不到超过免费 tier的限制。

S3向量查询服务:每进行100万次查询API调用,收取2.50美元的费用,此外还会根据处理的数据量额外收费。对于一个每月仅被查询几百次的小型索引来说,实际费用几乎可以忽略不计。

Bedrock(聊天推理服务):这是您的主要运营成本。每条聊天回复都需要调用大型语言模型。如果使用Nova Lite,每百万输入令牌的费用为0.06美元,每百万输出令牌的费用为0.24美元,那么一个典型的检索与生成查询(包括检索结果、用户问题以及回复内容)每次查询的成本大概在0.001–0.003美元之间。如果每月进行100次这样的查询,总成本将为0.10–0.30美元

Step Functions:该服务用于协调文档处理流程。标准工作流程的费用为每1,000次状态转换0.025美元。在运行过程中,其耗费相对较低,因为只有在数据被导入系统时才会被激活。

Cognito:用户认证服务。对于每月活跃用户数量不超过10,000人的情况,该服务是免费的。

CloudFront:用于提供仪表板界面的访问服务。免费 tier允许用户每月传输最多1 TB的数据。

API Gateway:负责处理GraphQL API请求。免费 tier允许用户每月进行最多100万次API调用。

如果一个知识库包含500份文档,且每月会有几百次查询被发起,那么您的每月运营成本大概会在0.50美元3.00美元之间。其中大部分费用都用于支付聊天回复所涉及的大型语言模型推理服务。

真正值得比较的地方

以下是使用传统的全天候运行架构构建相同系统时的成本对比:

服务名称 RAGStack-Lambda 传统架构
向量数据库 S3 Vectors:每月费用极低 Pinecone Starter:每月70美元
其他向量数据库选项 S3 Vectors:每月费用极低 OpenSearch Serverless:最低每月约350美元
计算资源 Lambda:免费 tier EC2或ECS:每月50–150美元
大型语言模型推理服务 每次查询的费用相同 每次查询的费用相同
总成本(空闲状态时) 0.50–3.00美元/月 120–500美元/月

无论采用哪种架构,每次查询所涉及的大型语言模型推理服务的费用大致都是相同的。真正的区别在于其他各项成本。传统架构无论是否有人使用,都会产生固定的费用;而无服务器架构则只按实际使用的资源来付费,空闲状态时几乎不会产生任何费用。

Transcribe服务呢?

如果您需要上传视频或音频文件,AWS Transcribe会收取语音转文本转换的费用。标准转录服务的费用约为每分钟音频内容0.024美元。对于一段10分钟的视频来说,转录所需的费用为0.24美元。这部分费用只需支付一次;一旦文本被转录并嵌入到系统中,后续对这些文本片段的查询就与其他文档一样,不需要再额外付费。

您最终将构建什么?

完成本教程的学习后,您将会拥有一个已经部署好的系统流程,该系统能够完成以下功能:

  1. 您可以通过网页控制面板上传文件(PDF、图片、视频、音频、HTML、CSV格式;具体可支持的文件类型列表非常详细)。

  2. 系统会自动识别文件的类型,并将其转发给相应的处理工具。扫描后的PDF文件会通过Textract进行OCR处理;视频和音频文件则会先经过Transcribe软件被转换成文本,同时还会被分割成长度为30秒的片段,并附带说话者的身份信息;图片则会被生成视觉嵌入特征,同时也会保留您添加的标题文字。

  3. 一个大语言模型会自动分析每份文件,提取其中的结构化元数据、主题、文件类型、时间范围以及被提及的人物等信息。

  4. 所有处理后的数据都会使用Amazon Nova Multimodal Embeddings技术进行嵌入处理,然后存储在由S3 Vectors提供支持的Bedrock知识库中。

  5. 您或您的用户可以通过AI聊天界面提出问题,系统会检索相关的文件,将这些文件作为背景信息传递给Bedrock大语言模型,最终返回包含可折叠引用信息的答案;对于视频和音频文件,还会提供时间戳链接,让用户能够直接跳转到相应的位置。

所有这些功能都在你的AWS账户中运行。不需要任何外部控制层,也不需要除了AWS之外的第三方服务。

架构设计

该图展示了买家AWS账户的流程图,详细说明了从S3到Lambda OCR等应用程序层的处理流程,这些流程得到了Cognito Auth等服务的支持。图中还强调了Amazon Bedrock在知识管理和聊天功能方面的集成作用。

关于这一架构设计,有几点需要注意:

Step Functions负责协调所有流程。当有文档被上传时,状态机会管理整个处理流程:它会检测文件的类型,将其转发到相应的处理程序,等待像Transcribe这样的异步操作完成,之后再触发嵌入数据和元数据提取的操作。

正是这种设计使得该处理流程无需运行任何服务器就能保持可靠性。如果某个步骤失败,系统会自动重试;你也可以清楚地了解到每份文档在处理流程中的当前位置。

Lambda负责具体的计算工作。每一个处理环节实际上都是一个Lambda函数。这些函数会在需要时被启动,运行几秒到几分钟后就会关闭。因此,根本不会有EC2实例在凌晨3点还处于空闲状态。

S3 Vectors用于存储向量数据。你的嵌入数据是保存在S3专为存储向量数据而设计的存储系统中,而不是像Pinecone或OpenSearch这样的专用向量数据库中。

正因为如此,才能实现“零成本扩展”的目标:你只需按照对象存储的费用标准来支付向量数据的存储费用,而无需维持任何数据库集群的运行。此外,你的向量数据也保存在自己的S3桶中,而不是由第三方服务来管理。

Cognito负责处理身份验证工作。控制面板和API都是通过Cognito用户池来进行保护的。在部署时,你会通过电子邮件收到一个临时密码;Web组件使用基于IAM的身份验证机制,而服务器端的集成则使用API密钥进行认证。

CloudFront用于提供UI界面。控制面板实际上是一个静态的React应用,它是通过CloudFront来提供的,因此不需要维护任何Web服务器。

两种部署方式

根据你的需求,有两种不同的部署途径:

通过AWS Marketplace进行部署(快速路径):只需点击“部署”按钮,填写两个字段(堆栈名称和电子邮件地址),然后等待大约10分钟即可。这种方式不需要使用任何本地工具,我们也会首先介绍这种部署方法。

从源代码开始进行部署(开发者路径):你需要克隆仓库,运行`publish.py`脚本,然后通过SAM CLI来进行部署。如果你想要自定义处理流程、修改UI界面或为该项目做出贡献,就可以选择这种方式。在介绍了AWS Marketplace的部署方法之后,我们会详细讲解这种开发者的部署途径。

这两种方式最终生成的堆栈配置是相同的。只不过通过AWS Marketplace进行部署时,CloudFormation模板会被封装成一个一键可完成的部署流程而已。

先决条件

在开始部署之前,你需要准备以下内容:

  • 需要一个具有创建CloudFormation堆栈、Lambda函数、S3存储桶、DynamoDB表以及Cognito用户池权限的AWS账户。如果您使用的是管理员账户,那么这些权限已经满足要求。

  • 需要具备访问Bedrock模型的权限:RAGStack默认使用us-east-1区域,因为该区域提供了Nova Multimodal Embeddings服务。亚马逊自家的模型(包括Nova)在Bedrock中也是默认可用的,无需手动启用。只需确保您的IAM角色具有必要的bedrock:InvokeModel权限即可。

  • 对于访问Marketplace资源而言,只需要一台网页浏览器即可。

  • 对于处理源代码而言,需要Python 3.13及以上版本、Node.js 24及以上版本、配置好的AWS CLI和SAM CLI,以及用于构建Lambda函数的Docker环境。

通过AWS Marketplace进行部署

这是最快的部署方式——无需使用任何本地工具、CLI或Docker。您只需在大约10分钟内完成CloudFormation堆栈的配置并启动相应的部署流程即可。

步骤1:启动堆栈创建流程

点击直接部署链接,即可打开预装有相关模板的CloudFormation“快速创建堆栈”页面。

AWS CloudFormation快速创建堆栈页面的截图。页面上显示了模板URL、堆栈名称、参数设置以及构建选项等信息。

步骤2:填写两个字段

虽然页面上有很多设置选项,但您只需要填写两个字段即可:

  • 堆栈名称:必须使用小写字母进行命名。这个名称将会作为您所有AWS资源的前缀(例如my-docsteam-kbproject-notes)。请保持名称简短。

  • 管理员邮箱:该字段属于“必填设置”项。Cognito会将临时登录凭据发送到这个邮箱地址,请使用您当前可以访问的邮箱地址。

其他所有选项,如构建选项、高级设置、OCR后端配置以及模型选择等,都可以保持默认值。这些选项以后可以根据需要进行自定义调整,但默认设置已经能够满足基本需求。

步骤3:开始部署

滚动到页面底部,确认“功能与转换”选项下的三个复选框都已选中,然后点击创建堆栈按钮。

部署过程大约需要10分钟。如果您感兴趣,可以在CloudFormation事件页面上查看部署进度,但在堆栈状态变为CREATE COMPLETE之前,您无需进行任何操作。

步骤4:登录系统

当部署完成后,请检查您的邮箱。Cognito会发送 dashboard的访问地址和临时密码给您。登录后设置新的密码,然后您就可以使用这个空的dashboard来管理文档了。

一个名为‘文档处理流程(演示版)’的软件控制面板界面,提供了上传、抓取和搜索文档的功能。界面上没有显示当前的文档或抓取任务,左侧有菜单选项,中间则有搜索和筛选栏。整体设计风格实用且极简。

从源代码进行部署

如果您想自定义处理流程、修改用户界面,或者为该项目做出贡献,那么请选择从源代码进行部署。

步骤1:克隆并设置环境

git clone https://github.com/HatmanStack/RAGStack-Lambda.git
cd RAGStack-Lambda

python -m venv venv
source venv/bin/activate  # 在Windows系统中:venv\Scripts\activate
pip install -r requirements.txt

步骤2:进行部署

publish.py脚本会完成所有工作:构建前端界面,打包Lambda函数,并通过SAM CLI进行部署。

python publish.py \
  --project-name my-docs \
  --admin-email admin@example.com

默认情况下,Nova Multimodal Embeddings会使用us-east-1区域进行部署。该脚本会构建React控制面板,生成Web组件,使用Docker打包所有的Lambda函数层,然后通过SAM部署CloudFormation堆栈。

首次部署需要较长时间(15到20分钟),因为所有内容都是从零开始构建的。后续的部署速度会更快,因为SAM会缓存那些没有发生变化的资源。

如果您只想要修改后端代码而不需要生成用户界面,可以执行以下命令:

# 跳过控制面板的构建过程(但仍然会生成Web组件)
python publish.py --project-name my-docs --admin-email admin@example.com --skip-ui

# 完全跳过所有用户界面的构建过程
python publish.py --project-name my-docs --admin-email admin@example.com --skip-ui-all

部署完成后,您将获得与在Marketplace上使用的相同的Cognito邮箱地址以及控制面板访问链接。

上传您的第一份文档

该控制面板提供了针对不同类型内容的标签页。我们先从“文档”标签页开始操作,因为这是最常用的功能。

文档

点击文档标签页,然后上传文件。RAGStack支持多种文件格式:PDF、DOCX、XLSX、HTML、CSV、JSON、XML、EML、EPUB、TXT以及Markdown。您可以直接拖放文件,也可以使用文件选择器来上传文件。

文件上传成功后,它就会进入处理流程。您可以实时看到处理进度更新:

  1. 已上传:文件已接收并存储在S3服务器上。

  2. 正在处理:Step Functions系统已经接收到文件,并将其转发给相应的处理程序。文本格式的文件(如HTML、CSV、Markdown)会直接被提取内容;扫描后的PDF文件和图片则会通过Textract OCR技术进行识别;大型语言模型则会分析文件内容,提取结构化元数据、主题、文档类型、提及的人名、时间范围等相关信息。

  3. 已建立索引:文件的嵌入信息已经生成,向量数据也已存储完毕,现在就可以通过该控制面板进行搜索了。

文本文档通常在1到5分钟内就能完成处理。而对于那些包含大量OCR内容的文档(如扫描后的PDF文件或带有文字的图片),处理时间会根据页数不同而有所变化,一般在2到15分钟之间。

文档上传界面的截图,标题为“文档处理流程(演示版)”。中间面板提供了一个用于拖放文件上传的区域,设计风格简洁现代。

图片

图片选项卡的工作方式有所不同。您可以上传JPG、PNG、GIF或WebP格式的图片,并为其添加说明文字。无论是图片本身还是说明文本,都会通过Nova多模态嵌入技术被嵌入到系统中,因此您既可以依据图片内容进行搜索,也可以根据所添加的描述来进行查询。

正是这种多模态嵌入技术发挥了其作用。传统的仅基于文本的RAG处理流程要求用户手动为每张图片编写描述;而在这里,图片本身就具备了可搜索性。而且由于所有数据都存储在您的AWS账户中,因此您无需将个人照片或敏感的视觉内容发送到外部服务进行处理。

视频和音频文件呢?

如果您上传了视频或音频文件,RAGStack会通过AWS Transcribe将其转换为文本。转换后的文本会被分割成每段30秒的长度,并标注出说话者的身份信息,然后像其他文档一样被嵌入到系统中。当聊天结果中提到了某个视频来源时,系统会提供时间戳链接,让您可以直接跳转到录像中的相应位置。

网络爬取

爬取选项卡允许您直接将网页内容导入知识库中。只需输入一个URL地址,RAGStack就会自动浏览该页面、提取其中的内容,并将其通过与上传文档相同的处理流程进行进一步处理,包括元数据提取、嵌入以及建立索引等。

这种方法非常实用,因为它可以让您无需手动保存和上传网页内容,就能直接从现有的网络资源中构建知识库。无论是文档网站、博客存档还是参考资料,只要这些内容是公开可访问的,都可以使用这个功能。

网络爬取界面,包含URL地址输入框、最大爬取页数设置选项以及深度控制选项。界面左侧还有范围选择下拉菜单和“开始爬取”按钮。

与知识库进行交互

这才是真正的价值所在。当您进入聊天选项卡并输入问题时,RAGStack会从您的知识库中检索相关文档,将这些文档作为上下文传递给Bedrock大型语言模型,然后生成包含来源引用的答案。

这些引用信息是可以展开查看的,点击即可了解哪些文档为生成答案提供了依据,同时还可以下载这些原始文件。对于视频和音频资料,系统还会提供可点击的时间戳链接,让您可以直接跳转到相关内容的位置。

一个名为“知识库聊天”的网页界面截图,左侧有菜单选项,中间部分提示用户提出与文档相关的问题。’ height="400" loading="lazy" src="https://cdn.hashnode.com/uploads/covers/698f5932352111d3f67030a2/760b3cd0-8bb8-493d-97ce-5eb3d0138592.png" style="display:block;margin:0 auto" width="600"/></p>
<h3>元数据过滤</h3>
<p>如果您上传了足够多的文档,从而形成了有意义的元数据分类,那么聊天界面允许您在查询之前根据元数据进行搜索结果筛选。RAGStack会自动从您的文档中识别出元数据结构,因此您无需手动配置这一功能——随着知识库的不断扩充,该功能会自动生效。</p>
<p>当您拥有一个规模庞大且包含多种类型数据的语料库时,这种功能就显得非常有用。与其依赖向量搜索从成千上万的文档中筛选出正确的信息,不如直接指定搜索范围:“仅搜索与项目X相关的文档”或“仅搜索2024年第四季度的内容”。</p>
<h2>将Web组件嵌入到您的应用程序中</h2>
<p>虽然控制面板对于管理知识库非常有用,但真正的强大之处在于能够将RAGStack的聊天功能嵌入到您自己的应用程序中。该Web组件适用于任何框架,无论是React、Vue、Angular、Svelte还是纯HTML。</p>
<p>只需从您的CloudFront服务器中加载一次脚本即可:</p>
<pre><code class="language-html"><script src="https://your-cloudfront-url/ragstack-chat.js"></script>
</code></pre>
<p>然后将其放置在您需要设置聊天界面的位置即可:</p>
<pre><code class="language-html"><ragstack-chat
  conversation-id="my-app"
  header-text="查询文档信息"
></ragstack-chat>
</code></pre>
<p>就这样。该组件会负责处理身份验证(通过IAM机制)、管理对话状态,并自动显示引用来源信息,所有这些功能都是独立运行的。您的CloudFront服务器地址会在配置结果中提供。</p>
<p>对于那些不需要用户界面的服务器端集成方案,RAGStack还提供了基于GraphQL API的接口,支持API密钥进行身份验证。您可以在控制面板的“设置”选项中找到相应的端点和API密钥。</p>
<h2>使用MCP服务器</h2>
<p>RAGStack附带了一个MCP服务器,它可以将您的知识库与Claude Desktop、Cursor、VS Code以及Amazon Q CLI等人工智能助手连接起来。这样一来,您就可以直接通过这些助手来查询文档信息,而无需切换到控制面板。</p>
<p>安装方法如下:</p>
<pre><code class="language-bash">pip install ragstack-mcp
</code></pre>
<p>然后将其添加到您所使用的人工智能助手的MCP配置中:</p>
<pre><code class="language-json">{
  "ragstack": {
    "command": "uvx",
    "args": ["ragstack-mcp"],
    "env": {
      "RAGSTACK_GRAPHQL_ENDPOINT": "YOUR_ENDPOINT",
      "RAGSTACK_API_KEY": "YOUR_API_KEY"
    }
  }
}
</code></pre>
<p>您的端点和API密钥可以在控制面板的“设置”选项中找到。配置完成后,在助手的聊天界面中输入<code>@ragstack</code>即可调用MCP服务器,然后就可以像这样提问:“在我的知识库中搜索与身份验证相关的文档”,系统会直接查询RAGStack数据库。</p>
<p>有关可用工具的完整列表及配置细节,请参阅<a href="https://github.com/HatmanStack/RAGStack-Lambda/blob/main/src/ragstack-mcp/README.md">MCP服务器文档</a>。</p>
<h2>从此处开始,您可以开发更多功能</h2>
<p>现在您已经拥有了一套部署完毕的RAG处理流程,它的运行成本几乎为零,而且能够处理文本、图片、视频和音频等多种类型的数据。接下来,您可以尝试以下几个发展方向:</p>
<p><strong>一个可搜索的个人资料库。</strong>你保存过的每一场会议演讲、每一本PDF格式的教科书、以及存放在某个文件夹里的每一个教程视频,都可以上传到这里。这样一来,你就可以通过同一个搜索界面来查找这些多年来积累下来的资料了。由于采用了多模态嵌入技术,你的截图和图表也同样可以被搜索到,而不仅仅是文本内容。</p>
<p>我就是通过这种方式构建了<a href="https://github.com/HatmanStack/family-archive-document-ai">这个家庭档案管理应用</a>的——它能够扫描信件、老照片以及家庭视频。而RAGStack作为嵌套在CloudFormation堆栈中的组件,使得整个家族成员都能通过聊天功能来搜索这些跨越数十年的回忆。</p>
<p><strong>为某个客户项目提供的“第二大脑”。</strong>我们可以抓取该客户现有的文档,上传服务描述文件和会议记录,再加入代码库的说明资料,这样就能形成一个专门针对该项目的可搜索知识库。在项目开始时搭建这个系统,在合同结束时就可以将其拆除。以这样的成本来看,这种基础设施属于“一次性使用”的类型。</p>
<p><strong>针对特定数据集开发的AI聊天工具。</strong>无论是食谱集合、法律文件、研究论文还是地方政府会议记录,任何那些对于通用大语言模型来说过于专业、难以理解的数据集,都可以用这种工具来处理。由于它采用了Web组件架构,因此你可以直接将其作为独立工具来使用,而无需从头开始开发前端界面。</p>
<p><strong>为你的MCP工作流程增添助力。</strong>如果你已经在使用Claude Desktop或Cursor,那么MCP服务器就能将你的知识库转化为助手可以使用的另一项工具。只需上传团队的操作手册和架构文档,然后在编辑器中输入<code>@ragstack</code>,就能立即获取所需信息,而无需切换标签页。</p>
<h2>总结</h2>
<p>你刚刚部署的无服务器RAG处理流程能够完成文档处理、多模态数据嵌入、元数据提取以及带有引用信息的AI聊天功能。所有这些功能在空闲时都不会占用任何资源,而且全部运行在你的AWS账户中。这些工具属于“你的资产”——而传统的解决方案每月所需的基础设施成本至少为<code>120-500美元</code>,相比之下,这个方案的成本简直微不足道。</p>
<p>完整的源代码可以在<a href="https://github.com/HatmanStack/RAGStack-Lambda">github.com/HatmanStack/RAGStack-Lambda</a>找到。如果你有任何问题,可以提交issue或打开PR进行讨论,也可以仔细研究其架构设计。如果想进一步了解其中的技术细节,特别是过滤后的向量搜索在像S3 Vectors这样的低成本优化后端上的运行效果,那么这个话题就留到下一篇文章再探讨吧。</p>
<div id="crp_related"> </div>                </div>
				<div class="entry-meta meta-tags">Tags: <span class="tag-links"><a href="http://www.cheeli.com.cn/articles/tag/%e4%bc%9a%e7%9a%84%ef%bc%8c%e5%be%88%e5%bc%ba%e7%9a%84%e3%80%82/" rel="tag">会的,很强的。</a></span></div>
</div>
			</div>
            
  <section id="comments">
	  <div class="comments-closed">
		  Comments are closed.	  </div>
  </section><!-- /#comments -->

        		
     </div><!-- /.col-md-12 -->                  	
    </div><!-- /.row -->

			</section>

	</div><!-- /.main -->    
         <aside class="sidebar side-right col-sm-4  th-widget-area" role="complementary">
	<section class="widget search-2 widget_search"><div class="widget-inner"><h3 class="widget-title">搜索</h3><form role="search" method="get" class="search-form form-inline" action="http://www.cheeli.com.cn/">
  <div class="input-group">
    <input type="search" value="" name="s" class="search-field form-control" placeholder="Search 上海软件外包公司-知力科技">
    <label class="hide">Search for:</label>
    <span class="input-group-btn">
      <button type="submit" class="search-submit btn btn-default">Search</button>
    </span>
  </div>
</form></div></section><section class="widget categories-2 widget_categories"><div class="widget-inner"><h3 class="widget-title">分类</h3>		<ul>
	<li class="cat-item cat-item-425"><a href="http://www.cheeli.com.cn/articles/category/iot/" >IoT</a>
</li>
	<li class="cat-item cat-item-64"><a href="http://www.cheeli.com.cn/articles/category/expertpoint/" >专家观点</a>
</li>
	<li class="cat-item cat-item-441"><a href="http://www.cheeli.com.cn/articles/category/%e4%ba%ba%e5%b7%a5%e6%99%ba%e8%83%bd/" >人工智能</a>
</li>
	<li class="cat-item cat-item-117"><a href="http://www.cheeli.com.cn/articles/category/%e5%a4%a7%e6%95%b0%e6%8d%ae/" >大数据</a>
</li>
	<li class="cat-item cat-item-476"><a href="http://www.cheeli.com.cn/articles/category/%e5%ae%89%e5%85%a8/" >安全</a>
</li>
	<li class="cat-item cat-item-495"><a href="http://www.cheeli.com.cn/articles/category/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/" >操作系统</a>
</li>
	<li class="cat-item cat-item-426"><a href="http://www.cheeli.com.cn/articles/category/%e6%95%85%e9%9a%9c%e9%a2%84%e8%ad%a6/" >故障预警</a>
</li>
	<li class="cat-item cat-item-469"><a href="http://www.cheeli.com.cn/articles/category/%e6%95%b0%e6%8d%ae%e5%ba%93/" >数据库</a>
</li>
	<li class="cat-item cat-item-477"><a href="http://www.cheeli.com.cn/articles/category/%e6%9e%b6%e6%9e%84/" >架构</a>
</li>
	<li class="cat-item cat-item-48"><a href="http://www.cheeli.com.cn/articles/category/hotnews/" >热点关注</a>
</li>
	<li class="cat-item cat-item-143"><a href="http://www.cheeli.com.cn/articles/category/%e7%a7%bb%e5%8a%a8/" >移动</a>
</li>
	<li class="cat-item cat-item-82"><a href="http://www.cheeli.com.cn/articles/category/%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91/" >软件开发</a>
</li>
	<li class="cat-item cat-item-1"><a href="http://www.cheeli.com.cn/articles/category/uncategorized/" >默认</a>
</li>
		</ul>
</div></section><section class="widget tag_cloud-4 widget_tag_cloud"><div class="widget-inner"><h3 class="widget-title">标签</h3><div class="tagcloud"><a href="http://www.cheeli.com.cn/articles/tag/ai/" class="tag-cloud-link tag-link-65 tag-link-position-1" style="font-size: 14.808219178082pt;" aria-label="AI (81个项目)">AI</a>
<a href="http://www.cheeli.com.cn/articles/tag/blank/" class="tag-cloud-link tag-link-193 tag-link-position-2" style="font-size: 9.5342465753425pt;" aria-label="blank (22个项目)">blank</a>
<a href="http://www.cheeli.com.cn/articles/tag/code/" class="tag-cloud-link tag-link-119 tag-link-position-3" style="font-size: 17.876712328767pt;" aria-label="code (169个项目)">code</a>
<a href="http://www.cheeli.com.cn/articles/tag/data/" class="tag-cloud-link tag-link-130 tag-link-position-4" style="font-size: 18.164383561644pt;" aria-label="data (183个项目)">data</a>
<a href="http://www.cheeli.com.cn/articles/tag/em/" class="tag-cloud-link tag-link-149 tag-link-position-5" style="font-size: 11.452054794521pt;" aria-label="em (35个项目)">em</a>
<a href="http://www.cheeli.com.cn/articles/tag/href/" class="tag-cloud-link tag-link-137 tag-link-position-6" style="font-size: 10.013698630137pt;" aria-label="href (25个项目)">href</a>
<a href="http://www.cheeli.com.cn/articles/tag/iot/" class="tag-cloud-link tag-link-513 tag-link-position-7" style="font-size: 10.397260273973pt;" aria-label="iot (27个项目)">iot</a>
<a href="http://www.cheeli.com.cn/articles/tag/java/" class="tag-cloud-link tag-link-100 tag-link-position-8" style="font-size: 8.958904109589pt;" aria-label="JAVA (19个项目)">JAVA</a>
<a href="http://www.cheeli.com.cn/articles/tag/kafka/" class="tag-cloud-link tag-link-237 tag-link-position-9" style="font-size: 10.205479452055pt;" aria-label="kafka (26个项目)">kafka</a>
<a href="http://www.cheeli.com.cn/articles/tag/li/" class="tag-cloud-link tag-link-225 tag-link-position-10" style="font-size: 14.808219178082pt;" aria-label="li (81个项目)">li</a>
<a href="http://www.cheeli.com.cn/articles/tag/line/" class="tag-cloud-link tag-link-180 tag-link-position-11" style="font-size: 8.2876712328767pt;" aria-label="line (16个项目)">line</a>
<a href="http://www.cheeli.com.cn/articles/tag/ltr/" class="tag-cloud-link tag-link-956 tag-link-position-12" style="font-size: 10.684931506849pt;" aria-label="ltr (29个项目)">ltr</a>
<a href="http://www.cheeli.com.cn/articles/tag/nbsp/" class="tag-cloud-link tag-link-439 tag-link-position-13" style="font-size: 11.260273972603pt;" aria-label="nbsp (34个项目)">nbsp</a>
<a href="http://www.cheeli.com.cn/articles/tag/python/" class="tag-cloud-link tag-link-133 tag-link-position-14" style="font-size: 9.7260273972603pt;" aria-label="python (23个项目)">python</a>
<a href="http://www.cheeli.com.cn/articles/tag/span/" class="tag-cloud-link tag-link-197 tag-link-position-15" style="font-size: 15.958904109589pt;" aria-label="span (107个项目)">span</a>
<a href="http://www.cheeli.com.cn/articles/tag/strong/" class="tag-cloud-link tag-link-116 tag-link-position-16" style="font-size: 20.753424657534pt;" aria-label="strong (340个项目)">strong</a>
<a href="http://www.cheeli.com.cn/articles/tag/variable/" class="tag-cloud-link tag-link-922 tag-link-position-17" style="font-size: 10.493150684932pt;" aria-label="variable (28个项目)">variable</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%b8%9a%e5%8a%a1/" class="tag-cloud-link tag-link-287 tag-link-position-18" style="font-size: 9.5342465753425pt;" aria-label="业务 (22个项目)">业务</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%b8%ad/" class="tag-cloud-link tag-link-178 tag-link-position-19" style="font-size: 12.219178082192pt;" aria-label="中 (43个项目)">中</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%ba%91/" class="tag-cloud-link tag-link-472 tag-link-position-20" style="font-size: 9.7260273972603pt;" aria-label="云 (23个项目)">云</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%ba%ba%e5%b7%a5%e6%99%ba%e8%83%bd/" class="tag-cloud-link tag-link-72 tag-link-position-21" style="font-size: 12.315068493151pt;" aria-label="人工智能 (44个项目)">人工智能</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%bb%a3%e7%a0%81/" class="tag-cloud-link tag-link-103 tag-link-position-22" style="font-size: 10.684931506849pt;" aria-label="代码 (29个项目)">代码</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%bc%81%e4%b8%9a/" class="tag-cloud-link tag-link-342 tag-link-position-23" style="font-size: 9.7260273972603pt;" aria-label="企业 (23个项目)">企业</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%bc%9a/" class="tag-cloud-link tag-link-227 tag-link-position-24" style="font-size: 11.931506849315pt;" aria-label="会 (40个项目)">会</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e4%bd%bf%e7%94%a8/" class="tag-cloud-link tag-link-156 tag-link-position-25" style="font-size: 12.794520547945pt;" aria-label="使用 (49个项目)">使用</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%85%ac%e5%8f%b8/" class="tag-cloud-link tag-link-210 tag-link-position-26" style="font-size: 9.1506849315068pt;" aria-label="公司 (20个项目)">公司</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%88%86%e6%9e%90/" class="tag-cloud-link tag-link-399 tag-link-position-27" style="font-size: 8.2876712328767pt;" aria-label="分析 (16个项目)">分析</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%9b%a2%e9%98%9f/" class="tag-cloud-link tag-link-164 tag-link-position-28" style="font-size: 8.7671232876712pt;" aria-label="团队 (18个项目)">团队</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%ad%a6%e4%b9%a0/" class="tag-cloud-link tag-link-566 tag-link-position-29" style="font-size: 8.5753424657534pt;" aria-label="学习 (17个项目)">学习</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%ae%89%e5%85%a8/" class="tag-cloud-link tag-link-462 tag-link-position-30" style="font-size: 11.739726027397pt;" aria-label="安全 (38个项目)">安全</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e5%b7%a5%e5%85%b7/" class="tag-cloud-link tag-link-422 tag-link-position-31" style="font-size: 8.2876712328767pt;" aria-label="工具 (16个项目)">工具</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%8a%80%e6%9c%af/" class="tag-cloud-link tag-link-78 tag-link-position-32" style="font-size: 11.931506849315pt;" aria-label="技术 (40个项目)">技术</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%95%b0%e6%8d%ae/" class="tag-cloud-link tag-link-87 tag-link-position-33" style="font-size: 22pt;" aria-label="数据 (459个项目)">数据</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%95%b0%e6%8d%ae%e5%ba%93/" class="tag-cloud-link tag-link-298 tag-link-position-34" style="font-size: 14.328767123288pt;" aria-label="数据库 (71个项目)">数据库</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%9c%8d%e5%8a%a1/" class="tag-cloud-link tag-link-194 tag-link-position-35" style="font-size: 12.123287671233pt;" aria-label="服务 (42个项目)">服务</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%9f%a5%e8%af%a2/" class="tag-cloud-link tag-link-115 tag-link-position-36" style="font-size: 8pt;" aria-label="查询 (15个项目)">查询</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%a8%a1%e5%9e%8b/" class="tag-cloud-link tag-link-123 tag-link-position-37" style="font-size: 13.657534246575pt;" aria-label="模型 (60个项目)">模型</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e6%b5%8b%e8%af%95/" class="tag-cloud-link tag-link-226 tag-link-position-38" style="font-size: 9.3424657534247pt;" aria-label="测试 (21个项目)">测试</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e7%94%a8%e6%88%b7/" class="tag-cloud-link tag-link-126 tag-link-position-39" style="font-size: 11.643835616438pt;" aria-label="用户 (37个项目)">用户</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e7%b3%bb%e7%bb%9f/" class="tag-cloud-link tag-link-202 tag-link-position-40" style="font-size: 11.835616438356pt;" aria-label="系统 (39个项目)">系统</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e7%bc%93%e5%ad%98/" class="tag-cloud-link tag-link-335 tag-link-position-41" style="font-size: 8.2876712328767pt;" aria-label="缓存 (16个项目)">缓存</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e7%bd%91%e7%bb%9c/" class="tag-cloud-link tag-link-311 tag-link-position-42" style="font-size: 8.7671232876712pt;" aria-label="网络 (18个项目)">网络</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e8%ae%be%e5%a4%87/" class="tag-cloud-link tag-link-451 tag-link-position-43" style="font-size: 10.397260273973pt;" aria-label="设备 (27个项目)">设备</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e9%97%ae%e9%a2%98/" class="tag-cloud-link tag-link-247 tag-link-position-44" style="font-size: 9.1506849315068pt;" aria-label="问题 (20个项目)">问题</a>
<a href="http://www.cheeli.com.cn/articles/tag/%e9%a1%b9%e7%9b%ae/" class="tag-cloud-link tag-link-161 tag-link-position-45" style="font-size: 8pt;" aria-label="项目 (15个项目)">项目</a></div>
</div></section>		<section class="widget recent-posts-2 widget_recent_entries"><div class="widget-inner">		<h3 class="widget-title">最新发布</h3>		<ul>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-build-a-serverless-rag-pipeline-on-aws-that-scales-to-zero-2/">如何在AWS上构建一个可扩展的无服务器RAG管道系统</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-build-an-autonomous-ai-agent-with-n8n-and-decapod/">如何使用n8n与Decapod构建自主AI智能体</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/a-comprehensive-guide-to-financial-storytelling-using-data-visualization/">《利用数据可视化进行财务故事讲述的全面指南》</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-implement-the-strategy-pattern-in-python/">如何在Python中实现这种策略模式</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/learn-how-ai-agents-are-changing-software-development-by-building-a-flutter-app-using-antigravity-and-stitch/">了解人工智能代理是如何通过使用“Antigravity”和“Stitch”工具来构建Flutter应用程序,从而改变软件开发的流程的。</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-use-websockets-from-python-to-fastapi/">如何使用WebSocket:从Python到FastAPI</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-create-a-table-of-contents-for-your-article/">如何为您的文章创建目录</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-get-started-coding-in-golang/">如何开始使用Golang进行编程</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/recursion-in-python-a-practical-introduction-for-beginners/">Python中的递归——面向初学者的实用入门指南</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/how-to-self-host-affine-on-windows-with-wsl-and-docker/">如何在Windows系统中使用WSL和Docker自行托管AFFiNE</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/running-ray-at-scale-on-aks/">在AKS上大规模运行Ray框架</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/claude-opus-4-6-introduces-adaptive-reasoning-and-context-compaction-for-long-running-agents/">Claude-Opus-4.6:为那些需要长期运行的智能代理系统引入了自适应推理机制与上下文压缩技术</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/aws-launches-strands-labs-for-experimental-ai-agent-projects/">AWS推出了用于实验性人工智能代理项目的实验室平台</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/making-retrospectives-effective-with-small-concrete-actions-and-rotating-facilitators/">通过一些具体的小行动以及轮换担任主持人的方式,使回顾活动真正取得成效</a>
									</li>
											<li>
					<a href="http://www.cheeli.com.cn/articles/advance-your-socio-technical-architecture-skills-with-infoqs-new-online-cohorts/">通过 InfoQ 的新在线课程来提升你的社会技术架构能力</a>
									</li>
					</ul>
		</div></section>
        		<section class="widget widget-social">
    		<div class="widget-inner">
        		                <h3 class="widget-title">分享至</h3>
                        			<div class="soc-widget">
        			<a target=_blank  href=