专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
漫步五角场  ·  银行 | 泰隆银行2025春季校园招聘正式启动 ·  4 小时前  
中国人民银行  ·  中共中央 国务院关于进一步深化农村改革 ... ·  昨天  
MiyueMedia  ·  1688overseas?在美区的TikTo ... ·  3 天前  
MiyueMedia  ·  1688overseas?在美区的TikTo ... ·  3 天前  
家有好大事  ·  母亲的损失,为何妹妹来补偿 ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

无服务器PDF聊天助手

GitHubStore  · 公众号  ·  · 2024-06-22 10:30

正文

项目简介

此示例应用程序允许您针对上传的任何 PDF 文档提出自然语言问题。它将 LLM 的文本生成和分析功能与文档内容的矢量搜索相结合。该解决方案使用无服务器服务(例如 Amazon Bedrock 来访问基础模型、AWS Lambda 来运行 LangChain 以及 Amazon DynamoDB 来存储会话内存)。

请参阅 AWS 无服务器博客上随附的博客文章了解详细说明,并按照下面的部署说明开始操作。

警告 此应用程序尚未准备好用于生产使用。它是为了演示和教育目的而编写的。在部署此堆栈之前,请查看本自述文件的安全部分并咨询您的安全团队。本示例中不暗示任何保证。

注意 此架构创建的资源具有与其相关的成本。请参阅 AWS 定价页面了解详细信息,并确保在部署此堆栈之前了解成本。


主要特征

  • 用于无服务器嵌入和推理的 Amazon Bedrock

  • LangChain将编排问答LLM链

  • FAISS vector store  FAISS矢量商店

  • 用于无服务器会话内存的 Amazon DynamoDB

  • 用于无服务器计算的 AWS Lambda

  • 前端采用 React、TypeScript、TailwindCSS 和 Vite 构建。

  • 本地运行或部署到 AWS Amplify 托管

  • 用于身份验证的 Amazon Cognito



应用程序如何运作

  1. 用户通过静态 Web 应用程序前端将 PDF 文档上传到 Amazon S3 存储桶。

  2. 此上传会触发元数据提取和文档嵌入过程。该过程将文档中的文本转换为向量。这些向量被加载到向量索引中并存储在 S3 中以供以后使用。

  3. 当用户与 PDF 文档聊天并向后端发送提示时,Lambda 函数会从 S3 检索索引并搜索与提示相关的信息。

  4. 然后,LLM 使用此矢量搜索的结果、对话中的先前消息及其通用功能来制定对用户的响应。


部署说明

先决条件

  • AWS SAM CLI

  • Python 3.11 或更高版本


克隆此存储库:

git clone https://github.com/aws-samples/serverless-pdf-chat.git

Amazon Bedrock安装

此应用程序可通过 Amazon Bedrock 与各种 LLMs 一起使用。有关完整列表,请参阅 Amazon Bedrock 中支持的型号。

默认情况下,此应用程序使用 Titan Embeddings G1 - Text 生成嵌入,并使用 Anthropic 的 Claude v2 模型进行响应。

重要信息 在您可以将这些模型与此应用程序一起使用之前,您必须在 Amazon Bedrock 控制台中请求访问权限。有关详细说明,请参阅《基岩用户指南》的模型访问部分。默认情况下,此应用程序配置为在 us-east-1 区域中使用 Amazon Bedrock,请确保您请求该区域中的模型访问权限(该区域不必与您将此堆栈部署到的区域相同)。

如果您想更改默认模型或基岩区域,请编辑 backend/src/generate_response/main.py 和 backend/src/generate_embeddings/main.py 中的 Bedrock 和 BedrockEmbeddings :

Bedrock(   model_id="anthropic.claude-v2", #adjust to use different model   region_name="us-east-1", #adjust if not using us-east-1)

如果您选择默认模型以外的模型,则还必须调整 AWS SAM 模板中 GenerateEmbeddingsFunction 和 GenerateResponseFunction 资源的 IAM 权限:

GenerateResponseFunction:  Type: AWS::Serverless::Function  Properties:    # other properties    Policies:      # other policies      - Statement:          - Sid: "BedrockScopedAccess"            Effect: "Allow"            Action: "bedrock:InvokeModel"            Resource:              - "arn:aws:bedrock:*::foundation-model/anthropic.claude-v2" # adjust with different model              - "arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v1" # adjust with different model







请到「今天看啥」查看全文