这是一个示例笔记本和 Web 应用程序,展示了如何将 Amazon Bedrock 和 Titan 与 Neo4j 结合使用。我们将探索如何利用生成式 AI 在 Neo4j 中构建和使用知识图。
我们使用的数据集来自 SEC 的 EDGAR 系统。它是使用这些脚本下载的。
该演示中的数据流由两部分组成:
要开始设置演示,请将此存储库克隆到 SageMaker Studio 环境中,然后运行编号为 1 和 2 的笔记本。
该演示需要 Neo4j 实例。您可以使用此处的 AWS Marketplace 列表进行部署。
您在笔记本环境中采用的 AWS 身份(可以是 SageMaker 中的Studio/笔记本执行角色,也可以是自我管理笔记本的角色或 IAM 用户)必须具有足够的 AWS IAM 权限才能调用 Amazon Bedrock 服务。
要授予 Bedrock 访问您身份的权限,您可以:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BedrockFullAccess",
"Effect": "Allow",
"Action": ["bedrock:*"],
"Resource": "*"
}
]
}
️ 注意:使用 Amazon SageMaker,您的笔记本执行角色通常与您登录 AWS 控制台所使用的用户或角色分开。如果您想探索 Amazon Bedrock 的 AWS 控制台,您还需要向您的控制台用户/角色授予权限。
有关 Bedrock 中细粒度操作和资源权限的更多信息,请查看 Bedrock 开发人员指南。
UI 应用程序基于 Streamlit。在此示例中,我们将展示如何在 AWS EC2 实例 (EC2) 虚拟机上运行它。首先,部署虚拟机。您可以使用本指南来剥离 Amazon Linux VM
我们将使用 AWS CLI。您需要按照以下步骤配置凭据才能使用 CLI 选项
通过aws
cli 使用 AWS 凭证登录。
aws configure
接下来,使用 AWS CLI 登录到新的 VM 实例:
export INSTANCE_ID=
aws ec2-instance-connect ssh --instance-id $INSTANCE_ID
我们将在端口 80 上运行应用程序。这需要 root 访问权限,因此首先:
sudo su
然后你需要安装 git 并克隆这个存储库:
yum install -y git
mkdir -p /app
cd /app
git clone https://github.com/neo4j-partners/neo4j-generative-ai-aws.git
cd neo4j-generative-ai-aws
我们先安装 python 和 pip:
yum install -y python
yum install -y pip
现在,让我们创建一个虚拟环境来隔离我们的 Python 环境并激活它
yum install -y virtualenv
python3 -m venv /app/venv/genai
source /app/venv/genai/bin/activate
要安装 Streamlit 和其他依赖项:
cd ui
pip install -r requirements.txt
通过运行以下命令检查是否可以从 PATH 访问streamlit
命令:
streamlit --version
如果没有,您需要将streamlit
二进制文件添加到 PATH 变量,如下所示:
export PATH="/app/venv/genai/bin:$PATH"
接下来,您需要创建一个机密文件供应用程序使用。打开文件并编辑它:
cd streamlit
cd .streamlit
cp secrets.toml.example secrets.toml
vi secrets.toml
您现在需要编辑该文件以反映您的凭据。该文件具有以下变量:
SERVICE_NAME = "" #e.g. bedrock-runtime
REGION_NAME = "" #e.g. us-west-2
CYPHER_MODEL = "" #e.g. anthropic.claude-v2
ACCESS_KEY = "AWS ACCESS KEY" #provide the access key with bedrock access
SECRET_KEY = "AWS SECRET KEY" #provide the secret key with bedrock access
NEO4J_HOST = "" #NEO4J_AURA_DS_URL
NEO4J_PORT = "7687"
NEO4J_USER = "neo4j"
NEO4J_PASSWORD = "" #Neo4j password
NEO4J_DB = "neo4j"
现在我们可以使用以下命令运行应用程序:
cd ..
streamlit run Home.py --server.port=80
或者,您可以在另一个屏幕会话中运行应用程序,以确保即使您与 ec2 实例断开连接,应用程序也能继续运行:
screen -S run_app
cd ..
streamlit run Home.py --server.port=80
您可以使用Ctrl+a
d
在应用程序仍在运行的情况下退出屏幕,然后使用screen -r
返回屏幕。要终止 screen 会话,请使用命令screen -XS run_app quit
。
在要在端口 80 上运行的 VM 上:
部署后,您将能够看到仪表板和聊天 UI:
在聊天 UI 中,您可以提出以下问题: