2024년 8월 21일: 이제 CoPilot을 v0.9(v0.9.0)에서 사용할 수 있습니다 . 자세한 내용은 릴리스 노트를 참조하세요. 참고: TigerGraph Cloud에서는 CoPilot v0.5만 사용할 수 있습니다.
2024년 4월 30일: 이제 CoPilot을 베타 버전(v0.5.0)으로 사용할 수 있습니다 . CoPilot에 완전히 새로운 기능이 추가되었습니다. 이제 자신의 문서에 그래프 증강 AI가 포함된 챗봇을 만들 수 있습니다. CoPilot은 원본 자료에서 지식 그래프를 구축하고 지식 그래프 RAG(Retrieval Augmented Generation)를 적용하여 자연어 질문에 대한 답변의 맥락적 관련성과 정확성을 향상시킵니다. 우리는 귀하에게 더 많은 가치를 제공할 수 있도록 지속적으로 개선하기 위해 귀하의 의견을 듣고 싶습니다. CoPilot을 사용해 본 후 이 간단한 설문조사를 작성해 주시면 도움이 될 것입니다. 많은 관심과 지원 부탁드립니다!
2024년 3월 18일: 이제 CoPilot을 알파(v0.0.1)에서 사용할 수 있습니다 . LLM(Large Language Model)을 사용하여 질문을 함수 호출로 변환한 다음 TigerGraph의 그래프에서 실행됩니다. 우리는 귀하에게 더 많은 가치를 제공할 수 있도록 지속적으로 개선하기 위해 귀하의 의견을 듣고 싶습니다. 사용해 보시는 경우, 저희가 이를 추적할 수 있도록 이 가입 양식을 작성해 주시면 도움이 될 것입니다(스팸 없음, 약속). 피드백을 제공하고 싶다면 이 간단한 설문조사를 작성해 주시기 바랍니다. 많은 관심과 지원 부탁드립니다!
TigerGraph CoPilot은 그래프 데이터베이스와 생성 AI의 기능을 결합하여 데이터에서 최대한의 가치를 끌어내고 분석, 개발, 관리 작업을 포함한 다양한 비즈니스 기능 전반에 걸쳐 생산성을 향상하도록 세심하게 설계된 AI 도우미입니다. 세 가지 핵심 구성 요소 서비스를 갖춘 하나의 AI 도우미입니다.
내장된 채팅 인터페이스 및 API인 TigerGraph Cloud의 채팅 인터페이스를 통해 CoPilot과 상호 작용할 수 있습니다. 현재로서는 CoPilot을 사용하려면 자체 LLM 서비스(OpenAI, Azure, GCP, AWS Bedrock, Ollama, Hugging Face 및 Groq.)가 필요하지만 향후 릴리스에서는 TigerGraph의 LLM을 사용할 수 있습니다.
질문이 자연어로 제기되면 CoPilot(InquiryAI)은 정확하고 관련성이 높은 응답을 얻기 위해 TigerGraph 데이터베이스 및 사용자가 선택한 LLM과의 새로운 3단계 상호 작용을 사용합니다.
첫 번째 단계에서는 질문을 데이터베이스에서 사용할 수 있는 특정 데이터에 맞춰 조정합니다. CoPilot은 LLM을 사용하여 질문을 그래프의 스키마와 비교하고 질문의 엔터티를 그래프 요소로 바꿉니다. 예를 들어 "BareMetalNode"라는 정점 유형이 있고 사용자가 "서버가 몇 개 있습니까?"라고 묻는 경우 해당 질문은 "BareMetalNode 정점이 몇 개 있습니까?"로 변환됩니다. 두 번째 단계에서 CoPilot은 LLM을 사용하여 변환된 질문을 선별된 데이터베이스 쿼리 및 함수 세트와 비교하여 가장 일치하는 항목을 선택합니다. 세 번째 단계에서 CoPilot은 식별된 쿼리를 실행하고 작업 이면의 추론과 함께 결과를 자연어로 반환합니다.
사전 승인된 쿼리를 사용하면 여러 가지 이점이 있습니다. 무엇보다도 각 쿼리의 의미와 동작이 검증되었기 때문에 환각의 가능성이 줄어듭니다. 둘째, 시스템은 질문에 답하는 데 필요한 실행 리소스를 예측할 수 있는 잠재력을 가지고 있습니다.
CoPilot은 SupportAI를 통해 사용자 자신의 문서나 텍스트 데이터에 그래프 증강 AI가 포함된 챗봇을 만듭니다. 원본 자료에서 지식 그래프를 구축하고 고유한 지식 그래프 기반 RAG(Retrieval Augmented Generation) 변형을 적용하여 문맥 관련성과 자연어 질문에 대한 답변의 정확성을 향상시킵니다.
CoPilot은 또한 개념을 식별하고 온톨로지를 구축하여 지식 그래프에 의미론과 추론을 추가하거나 사용자가 자신의 개념 온톨로지를 제공할 수 있습니다. 그런 다음 이 포괄적인 지식 그래프를 통해 CoPilot은 기존 벡터 검색과 그래프 순회를 결합한 하이브리드 검색을 수행하여 사용자의 지식 질문에 답하기 위해 보다 관련성 높은 정보와 풍부한 컨텍스트를 수집합니다.
데이터를 지식 그래프로 구성하면 챗봇이 정확하고 사실에 기반한 정보에 빠르고 효율적으로 접근할 수 있으므로 훈련 중에 학습된 패턴(때때로 부정확하거나 오래될 수 있음)에서 응답을 생성하는 의존도가 줄어듭니다.
QueryAI는 TigerGraph CoPilot의 세 번째 구성 요소입니다. 이는 영어 설명에서 GSQL의 그래프 쿼리를 생성하는 데 도움이 되는 개발자 도구로 사용되도록 설계되었습니다. 또한 스키마, 데이터 매핑 및 대시보드를 생성하는 데에도 사용할 수 있습니다. 이를 통해 개발자는 GSQL 쿼리를 보다 빠르고 정확하게 작성할 수 있으며 특히 GSQL을 처음 접하는 사람들에게 유용할 것입니다. 현재 실험적인 openCypher 생성이 가능합니다.
CoPilot은 TigerGraph Cloud의 작업 공간에 대한 추가 기능 서비스로 제공됩니다. 기본적으로 비활성화되어 있습니다. 마켓플레이스에서 TigerGraph CoPilot을 옵션으로 활성화하려면 [email protected]에 문의하세요.
TigerGraph CoPilot은 자체 인프라에 배포할 수 있는 GitHub의 오픈 소스 프로젝트입니다.
CoPilot의 소스 코드를 확장할 필요가 없는 경우 가장 빠른 방법은 저장소의 docker compose 파일과 함께 해당 docker 이미지를 배포하는 것입니다. 이 경로를 선택하려면 다음과 같은 전제 조건이 필요합니다.
1단계: docker-compose 파일 가져오기
git clone https://github.com/tigergraph/CoPilot
복제 Docker Compose 파일에는 Milvus 데이터베이스를 포함하여 CoPilot에 대한 모든 종속성이 포함되어 있습니다. 특정 서비스가 필요하지 않은 경우 Compose 파일을 편집하여 제거하거나 Compose 파일을 실행할 때 크기를 0으로 설정합니다(자세한 내용은 나중에 설명). 또한 CoPilot은 배포 시 Swagger API 문서 페이지와 함께 제공됩니다. 이를 비활성화하려면 Compose 파일에서 CoPilot 서비스에 대해 PRODUCTION
환경 변수를 true로 설정하면 됩니다.
2단계: 구성 설정
그런 다음 Docker Compose 파일이 있는 동일한 디렉터리에 다음 구성 파일을 만들고 입력합니다.
3단계(선택 사항): 로깅 구성
touch configs/log_config.json
. 구성에 대한 세부정보는 여기에서 확인할 수 있습니다.
4단계: 모든 서비스 시작
이제 docker compose up -d
실행하고 모든 서비스가 시작될 때까지 기다리세요. 포함된 Milvus DB를 사용하지 않으려면 scale을 0으로 설정하여 시작하지 않을 수 있습니다. docker compose up -d --scale milvus-standalone=0 --scale etcd=0 --scale minio=0
.
5단계: UDF 설치
TigerGraph 데이터베이스 버전 4.x에는 이 단계가 필요하지 않습니다. TigerGraph 3.x의 경우 CoPilot이 작동하려면 몇 가지 사용자 정의 함수(UDF)를 설치해야 합니다.
sudo su - tigergraph
로 전환합니다. TigerGraph가 클러스터에서 실행 중인 경우 머신 중 하나에서 이 작업을 수행할 수 있습니다. gadmin config set GSQL.UDF.EnablePutTgExpr true
gadmin config set GSQL.UDF.Policy.Enable false
gadmin config apply
gadmin restart GSQL
PUT tg_ExprFunctions FROM "./tg_ExprFunctions.hpp"
PUT tg_ExprUtil FROM "./tg_ExprUtil.hpp"
gadmin config set GSQL.UDF.EnablePutTgExpr false
gadmin config set GSQL.UDF.Policy.Enable true
gadmin config apply
gadmin restart GSQL
configs/llm_config.json
파일에서 LLM 공급자에 대한 아래의 JSON 구성 템플릿을 복사하고 해당 필드를 채웁니다. 공급자는 하나만 필요합니다.
오픈AI
OPENAI_API_KEY
외에도 llm_model
및 model_name
편집하여 특정 구성 세부정보와 일치시킬 수 있습니다.
{
"model_name" : " GPT-4 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " YOUR_OPENAI_API_KEY_HERE "
}
},
"completion_service" : {
"llm_service" : " openai " ,
"llm_model" : " gpt-4-0613 " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " YOUR_OPENAI_API_KEY_HERE "
},
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
GCP
https://cloud.google.com/docs/authentication/application-default-credentials#GAC에 있는 GCP 인증 정보를 따르고 VertexAI 자격 증명으로 서비스 계정을 만듭니다. 그런 다음 docker run 명령에 다음을 추가합니다.
-v $( pwd ) /configs/SERVICE_ACCOUNT_CREDS.json:/SERVICE_ACCOUNT_CREDS.json -e GOOGLE_APPLICATION_CREDENTIALS=/SERVICE_ACCOUNT_CREDS.json
JSON 구성은 다음과 같아야 합니다.
{
"model_name" : " GCP-text-bison " ,
"embedding_service" : {
"embedding_model_service" : " vertexai " ,
"authentication_configuration" : {}
},
"completion_service" : {
"llm_service" : " vertexai " ,
"llm_model" : " text-bison " ,
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/gcp_vertexai_palm/ "
}
}
하늘빛
AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_API_KEY
및 azure_deployment
외에도 llm_model
및 model_name
특정 구성 세부 정보와 일치하도록 편집할 수 있습니다.
{
"model_name" : " GPT35Turbo " ,
"embedding_service" : {
"embedding_model_service" : " azure " ,
"azure_deployment" : " YOUR_EMBEDDING_DEPLOYMENT_HERE " ,
"authentication_configuration" : {
"OPENAI_API_TYPE" : " azure " ,
"OPENAI_API_VERSION" : " 2022-12-01 " ,
"AZURE_OPENAI_ENDPOINT" : " YOUR_AZURE_ENDPOINT_HERE " ,
"AZURE_OPENAI_API_KEY" : " YOUR_AZURE_API_KEY_HERE "
}
},
"completion_service" : {
"llm_service" : " azure " ,
"azure_deployment" : " YOUR_COMPLETION_DEPLOYMENT_HERE " ,
"openai_api_version" : " 2023-07-01-preview " ,
"llm_model" : " gpt-35-turbo-instruct " ,
"authentication_configuration" : {
"OPENAI_API_TYPE" : " azure " ,
"AZURE_OPENAI_ENDPOINT" : " YOUR_AZURE_ENDPOINT_HERE " ,
"AZURE_OPENAI_API_KEY" : " YOUR_AZURE_API_KEY_HERE "
},
"model_kwargs" : {
"temperature" : 0
},
"prompt_path" : " ./app/prompts/azure_open_ai_gpt35_turbo_instruct/ "
}
}
AWS 기반암
{
"model_name" : " Claude-3-haiku " ,
"embedding_service" : {
"embedding_model_service" : " bedrock " ,
"embedding_model" : " amazon.titan-embed-text-v1 " ,
"authentication_configuration" : {
"AWS_ACCESS_KEY_ID" : " ACCESS_KEY " ,
"AWS_SECRET_ACCESS_KEY" : " SECRET "
}
},
"completion_service" : {
"llm_service" : " bedrock " ,
"llm_model" : " anthropic.claude-3-haiku-20240307-v1:0 " ,
"authentication_configuration" : {
"AWS_ACCESS_KEY_ID" : " ACCESS_KEY " ,
"AWS_SECRET_ACCESS_KEY" : " SECRET "
},
"model_kwargs" : {
"temperature" : 0 ,
},
"prompt_path" : " ./app/prompts/aws_bedrock_claude3haiku/ "
}
}
올라마
{
"model_name" : " GPT-4 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " ollama " ,
"llm_model" : " calebfahlgren/natural-functions " ,
"model_kwargs" : {
"temperature" : 0.0000001
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
포옹하는 얼굴
전용 엔드포인트가 있는 Hugging Face 모델의 구성 예는 아래와 같습니다. 구성 세부정보를 지정하세요.
{
"model_name" : " llama3-8b " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " huggingface " ,
"llm_model" : " hermes-2-pro-llama-3-8b-lpt " ,
"endpoint_url" : " https:endpoints.huggingface.cloud " ,
"authentication_configuration" : {
"HUGGINGFACEHUB_API_TOKEN" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
서버리스 엔드포인트가 있는 Hugging Face 모델의 구성 예는 다음과 같습니다. 구성 세부정보를 지정하세요.
{
"model_name" : " Llama3-70b " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " huggingface " ,
"llm_model" : " meta-llama/Meta-Llama-3-70B-Instruct " ,
"authentication_configuration" : {
"HUGGINGFACEHUB_API_TOKEN" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/llama_70b/ "
}
}
그로크
{
"model_name" : " mixtral-8x7b-32768 " ,
"embedding_service" : {
"embedding_model_service" : " openai " ,
"authentication_configuration" : {
"OPENAI_API_KEY" : " "
}
},
"completion_service" : {
"llm_service" : " groq " ,
"llm_model" : " mixtral-8x7b-32768 " ,
"authentication_configuration" : {
"GROQ_API_KEY" : " "
},
"model_kwargs" : {
"temperature" : 0.1
},
"prompt_path" : " ./app/prompts/openai_gpt4/ "
}
}
아래 내용을 configs/db_config.json
에 복사하고 데이터베이스 구성과 일치하도록 hostname
및 getToken
필드를 편집하세요. TigerGraph에서 토큰 인증이 활성화된 경우 getToken
true
로 설정합니다. 질문에 답할 때 소비되는 데이터베이스 리소스의 양을 제어하려면 제한 시간, 메모리 임계값 및 스레드 제한 매개변수를 원하는 대로 설정하세요.
"ecc"와 "chat_history_api"는 CoPilot 내부 구성 요소의 주소입니다. Docker Compose 파일을 그대로 사용하는 경우에는 변경할 필요가 없습니다.
{
"hostname" : " http://tigergraph " ,
"restppPort" : " 9000 " ,
"gsPort" : " 14240 " ,
"getToken" : false ,
"default_timeout" : 300 ,
"default_mem_threshold" : 5000 ,
"default_thread_limit" : 8 ,
"ecc" : " http://eventual-consistency-service:8001 " ,
"chat_history_api" : " http://chat-history:8002 "
}
아래 내용을 configs/milvus_config.json
에 복사하고 Milvus 구성과 일치하도록 host
및 port
필드를 편집합니다(Docker 구성을 염두에 두세요). Milvus 설정에 필요한 경우 username
과 password
아래에서 구성할 수도 있습니다. Milvus는 지원되는 임베딩 저장소일 뿐이므로 enabled
항상 "true"로 설정되어야 합니다.
{
"host" : " milvus-standalone " ,
"port" : 19530 ,
"username" : " " ,
"password" : " " ,
"enabled" : " true " ,
"sync_interval_seconds" : 60
}
아래 코드를 configs/chat_config.json
에 복사하세요. Docker Compose 파일에서 채팅 기록 서비스의 포트를 변경하지 않는 한 아무것도 변경할 필요가 없습니다.
{
"apiPort" : " 8002 " ,
"dbPath" : " chats.db " ,
"dbLogPath" : " db.log " ,
"logPath" : " requestLogs.jsonl " ,
"conversationAccessRoles": ["superuser", "globaldesigner"]
}
InquiryAI에서 openCypher 쿼리 생성을 활성화하려면 docker compose 파일의 CoPilot 서비스에서 USE_CYPHER
환경 변수를 "true"
로 설정할 수 있습니다. 기본적으로 이는 "false"
로 설정됩니다. 참고 : openCypher 쿼리 생성은 아직 베타 버전이므로 예상대로 작동하지 않을 수 있으며 잘못된 코드 생성으로 인해 환각적인 답변이 발생할 가능성이 높아집니다. 주의해서 사용하고 비프로덕션 환경에서만 사용하십시오.
CoPilot은 기술 사용자와 비기술 사용자 모두에게 친숙합니다. CoPilot에 대한 API 액세스뿐만 아니라 그래픽 채팅 인터페이스도 있습니다. 기능 측면에서 CoPilot은 데이터베이스의 기존 쿼리를 호출하여 질문에 답변하고(InquiryAI), 문서에서 지식 그래프를 구축하고(SupportAI), 문서를 기반으로 지식 질문에 답변할 수 있습니다(SupportAI).
CoPilot 사용 방법은 공식 문서를 참조하세요.
TigerGraph CoPilot은 쉽게 확장할 수 있도록 설계되었습니다. 다양한 LLM 공급자, 다양한 그래프 스키마 및 다양한 LangChain 도구를 사용하도록 서비스를 구성할 수 있습니다. 또한 다양한 임베딩 서비스, 다양한 LLM 생성 서비스, 다양한 LangChain 도구를 사용하도록 서비스를 확장할 수도 있습니다. 서비스 확장 방법에 대한 자세한 내용은 개발자 가이드를 참조하세요.
tests
디렉토리에는 테스트 제품군이 포함되어 있습니다. 더 많은 테스트를 추가하려면 여기 가이드를 참조하세요. 테스트 실행을 위한 드라이버인 쉘 스크립트 run_tests.sh
도 폴더에 포함되어 있습니다. 이 스크립트를 사용하는 가장 쉬운 방법은 테스트를 위해 Docker 컨테이너에서 실행하는 것입니다.
서비스 디렉터리의 최상위 수준으로 이동하고 python -m pytest
실행하여 각 서비스에 대한 테스트를 실행할 수 있습니다.
예: (최상위 수준에서)
cd copilot
python -m pytest
cd ..
먼저 모든 LLM 서비스 제공업체 구성 파일이 제대로 작동하는지 확인하세요. 컨테이너가 액세스할 수 있도록 구성이 마운트됩니다. 또한 데이터베이스 및 Milvus와 같은 모든 종속성이 준비되었는지 확인하십시오. 그렇지 않은 경우 포함된 docker compose 파일을 실행하여 해당 서비스를 생성할 수 있습니다.
docker compose up -d --build
테스트 결과를 기록하기 위해 가중치 및 편향을 사용하려면 WandB API 키를 호스트 시스템의 환경 변수에 설정해야 합니다.
export WANDB_API_KEY=KEY HERE
그런 다음 Dockerfile.tests
파일에서 Docker 컨테이너를 빌드하고 컨테이너에서 테스트 스크립트를 실행할 수 있습니다.
docker build -f Dockerfile.tests -t copilot-tests:0.1 .
docker run -d -v $( pwd ) /configs/:/ -e GOOGLE_APPLICATION_CREDENTIALS=/GOOGLE_SERVICE_ACCOUNT_CREDS.json -e WANDB_API_KEY= $WANDB_API_KEY -it --name copilot-tests copilot-tests:0.1
docker exec copilot-tests bash -c " conda run --no-capture-output -n py39 ./run_tests.sh all all "
실행되는 테스트를 편집하려면 ./run_tests.sh
스크립트에 인수를 전달할 수 있습니다. 현재 사용할 LLM 서비스(기본값은 모두), 테스트할 스키마(기본값은 모두), 로깅에 가중치 및 편향을 사용할지 여부(기본값은 true)를 구성할 수 있습니다. 옵션에 대한 지침은 다음과 같습니다.
run_tests.sh
의 첫 번째 매개변수는 테스트할 LLM입니다. 기본값은 all
입니다. 옵션은 다음과 같습니다:
all
- 모든 LLM에 대해 테스트를 실행합니다.azure_gpt35
- Azure에서 호스팅되는 GPT-3.5에 대해 테스트 실행openai_gpt35
- OpenAI에서 호스팅되는 GPT-3.5에 대해 테스트 실행openai_gpt4
- OpenAI에서 호스팅되는 GPT-4에서 테스트 실행gcp_textbison
- GCP에서 호스팅되는 text-bison에서 테스트를 실행합니다. run_tests.sh
의 두 번째 매개변수는 테스트할 그래프입니다. 기본값은 all
입니다. 옵션은 다음과 같습니다:
all
- 사용 가능한 모든 그래프에 대해 테스트를 실행합니다.OGB_MAG
- 학술 논문 데이터세트 제공: https://ogb.stanford.edu/docs/nodeprop/#ogbn-mag.DigtialInfra
- 디지털 인프라 디지털 트윈 데이터 세트Synthea
- 합성 건강 데이터 세트 테스트 결과를 가중치 및 편향에 기록하려는 경우(그리고 위에서 올바른 자격 증명을 설정한 경우) run_tests.sh
에 대한 최종 매개변수의 기본값은 자동으로 true로 설정됩니다. 가중치 및 편향 로깅을 비활성화하려면 false
사용하세요.
TigerGraph CoPilot에 기여하고 싶다면 여기에서 문서를 읽어보세요.