생성적 AI는 운영 및 개발 측면에서 많은 기회를 제공하지만, 보안 솔루션에 생성적 AI를 통합하려는 사람들에게는 많은 과제를 안겨줍니다.
그러한 과제 중 하나는 사기와 남용으로부터 애플리케이션과 API를 보호하는 데 사용되는 보안 정책과 같이 타사 AI 서비스와 공유가 허용되지 않은 민감한 콘텐츠에 대한 LLM(대규모 언어 모델)을 통해 통찰력을 얻는 방법입니다.
LLM을 취득한 사람이 겪는 두 번째 어려움은 환각 증상을 겪는다는 점인데, 특히 LLM이 거의 알지 못하는 과목과 관련된 내용을 분석하거나 생성하라는 요청을 받았을 때 더욱 그렇습니다. 이는 DEX와 같은 도메인 특정 언어 의 경우 종종 그렇습니다. 이는 순수 함수형, 정적 타입, 비튜링 완전 언어로, 잘 정의되어 있지만 널리 사용되지는 않습니다.
첫 번째 과제인 데이터 개인정보 보호는 처음에는 극복할 수 없는 것처럼 들립니다. 보안 회사는 정책을 포함하여 모든 고객 데이터의 개인정보 보호 및 보안을 매우 중요하게 여겨야 합니다. 따라서 정책에 대한 통찰력을 얻는 데 LLM을 사용하면 운영 관행과 고객 모두에게 도움이 되지만, 이 데이터를 타사 LLM과 공유하지 않고도 민감한 데이터에서 통찰력을 얻을 수 있는 솔루션이 필요하며, LLM이 이를 처리할 수 없게 해야 합니다. 두 번째 과제(환각)는 현재 업계 전체가 극복하기 위해 고군분투하고 있는 문제로, 특히 정책, 구성 및 코드에 대한 답변과 관련하여 더욱 그렇습니다.
사람은 프로그램을 일련의 문자로 보지만, 컴파일러는 다르게 봅니다. 컴파일러에게 DEX 프로그램은 AST(추상 구문 트리)라고 하는 일종의 데이터 구조입니다. 이 트리는 방향성 비순환 그래프이므로 해당 정책이 그래프로 표현되기에 적합합니다. 따라서 우리가 찾은 솔루션은 그래프 데이터베이스(Neo4j)를 활용하고 GPT 에이전트를 사용하여 이에 대한 GraphQL 쿼리를 생성합니다. 이 접근 방식은 GraphQL을 사용하여 타사 LLM으로부터 개인 정보를 보호하면서 데이터가 포함된 그래프 데이터베이스를 쿼리할 수 있기 때문에 첫 번째 과제를 깔끔하게 해결합니다.
두 번째 과제인 환각은 극복하기가 더 어렵지만, 우리의 접근 방식은 여러 AI 기술을 사용하여 위험을 완화하는 데에도 효과적입니다. 또한 GraphQL은 대부분의 GPT 모델에 익숙한 널리 사용되고 잘 문서화된 쿼리 언어이며, 다양한 도구를 사용하여 구문적으로 쉽게 검증할 수 있습니다. 이를 통해 환각의 가능성을 줄일 수 있으며, 사용 전에 정확성을 확인할 수 있는 방법을 제공합니다.
AI 환각은 생성 AI가 실제 데이터나 패턴에 기반하지 않고 대신 조작되거나 왜곡된 출력을 생성하는 경우를 말합니다. 이러한 환각은 종종 AI의 훈련 데이터의 한계나 편향으로 인해 발생하거나, AI가 이전에 경험하지 않은 상황에 대한 출력을 생성하려고 할 때 발생합니다. 환각은 논리적으로 말이 안 되거나 입력 데이터와 맞지 않는 조작되거나 터무니없는 내용이나 결론으로 나타날 수 있습니다. 예를 들어, 텍스트 생성 AI가 생성하는 문장은 그럴듯해 보이지만 궁극적으로는 의미가 없거나 제공된 맥락과 관련이 없는 경우가 있습니다.
GraphQL은 API(애플리케이션 프로그래밍 인터페이스)를 위한 오픈 소스 쿼리 언어이자 데이터에 대해 정의된 유형 시스템을 사용하여 해당 쿼리를 실행하는 서버 측 런타임입니다. Meta(Facebook)에서 개발한 것으로, 기존 RESTful API보다 더 효율적이고 강력하며 유연한 대안을 제공하도록 설계되었습니다. GraphQL API는 쿼리하거나 변경할 수 있는 데이터 유형을 지정하는 스키마로 정의됩니다. 이 강력한 타이핑을 통해 더 나은 툴링, 내성 및 검증이 가능해졌습니다.
보안에 생성적 AI를 안전하게 통합하기 위한 우리의 접근 방식은 GPT 에이전트의 형태를 취합니다. 잘 문서화된 언어를 사용하면 환각 위험을 줄이는 데 도움이 되지만, 에이전트의 출력 공간을 오류를 프로그래밍 방식으로 확인할 수 있는 형식으로 제한하는 동시에 OpenAI에 민감한 데이터를 전송하지 않는 방법을 찾아야 했습니다. GraphQL을 출력 공간으로 사용하는 것이 효과적입니다. 대부분의 질문에 답할 만큼 표현력이 풍부하고 알려진 스키마에 대해 프로그래밍 방식으로 확인할 수 있는 추상화이기 때문입니다.
이러한 접근 방식을 DEX에 적용했지만 소셜 네트워크, 네트워크 및 인프라 토폴로지, 공급망, 지리공간(매핑) 데이터 등 충분히 상호 연결되고 관계적 데이터 세트에도 효과적입니다.
PC-그래프 아키텍처는 DEX를 그래프 표현으로 변환하는 구성 요소로 구성됩니다. 결과 그래프 데이터는 Neo4j 데이터베이스에 저장됩니다. GPT 에이전트의 출력은 API를 통해 GraphQL Apollo 서버로 제출될 수 있으며, 이 서버는 그래프 데이터베이스에 대해 쿼리를 실행합니다.
저희 에이전트는 DEX로 작성된 정책에 대한 정보에 대한 자연어 요청에 응답하기 위해 GPT4를 사용합니다. 에이전트는 pc-graph API를 이해하고 사용자가 검토하고 실행할 수 있는 적절한 쿼리나 뮤테이션으로 응답하여 이를 달성합니다.
pc-graph API 외에도, 저희 에이전트는 사용된 라이브러리와 DEX 언어에 대한 몇 가지 개념도 이해합니다. 이 정보는 최적의 결과를 제공하기 위해 런타임 시 컨텍스트에 포함되도록 신중하게 선택됩니다.
이로 인해 발생하는 한 가지 과제는 에이전트가 스키마의 관련 부분과 라이브러리가 생성한 추가 유형, 쿼리, 돌연변이를 포함하는 neo4j-graphQL 문서와 같은 보충 자료를 보관하기 위해 큰 컨텍스트가 필요하다는 것입니다. GPT4-8k를 사용하면 적절한 맥락 내 학습을 위한 공간이 부족해집니다. 32k 컨텍스트는 수용 가능한 결과를 제공하지만, 추가 비용이 발생합니다. 예를 들어, OpenAI에 대한 각 요청에서 GraphQL SDL(스키마 정의 언어)을 보내야 합니다. GPT4 대화형 모델을 스키마로 미세 조정하여 컨텍스트에 포함할 필요성을 없앨 수 있다면 이는 문제가 되지 않을 것입니다. 하지만 이는 현재 OpenAI에서 지원되지 않습니다.
우리는 GPT4의 결과를 개선하는 세 가지 AI 접근 방식을 찾았습니다.
마지막 단계로, GraphQL 쿼리에 대한 정적 구문 오류 검사를 제공하는 도구를 사용하여 초기 완화책을 통과하지 못한 잠재적인 환각을 포착합니다.
이 디자인은 동일한 프롬프트에서 잠재적인 답변 세 개를 처음에 생성함으로써 더욱 개선되었습니다. 이렇게 하면 주어진 질문에 대한 시간과 비용이 줄어들 뿐만 아니라, 답변의 정답률이 높아져 일관성도 향상됩니다. 이렇게 함으로써 우리는 가능성은 낮지만 정확한 옵션을 탐색하기 위해 무작위적인 변화에 대한 여지를 갖게 됩니다.
우리의 접근 방식 덕분에 개인 데이터를 공유하지 않고도 정책에 대한 통찰력을 얻을 수 있었습니다. 쿼리 결과의 품질과 일관성도 눈에 띄게 개선되었으며 특히 여러 필터 및/또는 집계 함수가 포함된 대규모 또는 복잡한 쿼리를 구성하는 작업에서 환각이 눈에 띄게 감소했습니다.
어떤 면에서 우리는 케이크를 가지고 먹기도 합니다. 창조적 에이전트와 결정론적 에이전트 중 하나를 선택해야 할 때 우리는 단순히 두 가지를 모두 합니다.