이는 Amazon Bedrock 및 Titan을 Neo4j와 함께 사용할 수 있는 방법을 보여주는 샘플 노트북 및 웹 애플리케이션입니다. 생성 AI를 활용하여 Neo4j에서 지식 그래프를 구축하고 소비하는 방법을 살펴보겠습니다.
우리가 사용하는 데이터 세트는 SEC의 EDGAR 시스템에서 가져온 것입니다. 이 스크립트를 사용하여 다운로드되었습니다.
이 데모의 데이터 흐름은 두 부분으로 구성됩니다.
데모 설정을 시작하려면 이 리포지토리를 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에서 애플리케이션을 실행할 것입니다. 이를 위해서는 루트 액세스가 필요하므로 먼저 다음을 수행하십시오.
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에서 다음과 같은 질문을 할 수 있습니다.