これは、Amazon Bedrock と Titan を Neo4j でどのように使用できるかを示すサンプルノートブックおよび Web アプリケーションです。 Neo4j で生成 AI を活用してナレッジ グラフを構築および利用する方法を検討します。
私たちが使用しているデータセットは SEC の EDGAR システムからのものです。これらのスクリプトを使用してダウンロードされました。
このデモのデータフローは 2 つの部分で構成されます。
デモのセットアップを開始するには、このリポジトリを SageMaker Studio 環境に複製し、番号 1 と 2 のノートブックを実行します。
このデモには Neo4j インスタンスが必要です。こちらの AWS Marketplace リストを使用してデプロイできます。
ノートブック環境から想定する AWS ID (SageMaker のStudio/ノートブック実行ロール、または自己管理ノートブックのロールまたは IAM ユーザー) には、Amazon Bedrock サービスを呼び出すための十分な AWS IAM アクセス許可が必要です。
Bedrock に自分の ID へのアクセスを許可するには、次のことができます。
{
"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) VM 上で実行する方法を示します。まず、VM をデプロイします。このガイドを使用して、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
次のコマンドを実行して、 streamlit
コマンドが PATH からアクセスできるかどうかを確認します。
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
オプションで、別の screen セッションでアプリを実行して、ec2 インスタンスから切断した場合でもアプリが実行し続けるようにすることができます。
screen -S run_app
cd ..
streamlit run Home.py --server.port=80
Ctrl+a
d
使用すると、アプリが実行中の状態で画面を終了し、 screen -r
を使用して画面に戻ることができます。 screen セッションを強制終了するには、コマンドscreen -XS run_app quit
を使用します。
VM 上でポート 80 で実行するには:
デプロイすると、ダッシュボードとチャット UI が表示されるようになります。
チャット UI から次のような質問をすることができます。