Vanna: RAG 기법을 사용하여 텍스트에서 정확한 SQL 쿼리 생성하기

최신 AI 도구6개월 전 업데이트 Sharenet.ai
1.2K 0
吐司AI

일반 소개

Vanna는 RAG(검색 증강 생성) 기술을 통해 SQL 쿼리를 생성하는 데 중점을 둔 MIT 라이선스 오픈 소스 Python 프레임워크입니다. 사용자는 RAG 모델을 학습시켜 자신의 데이터에 적용한 다음 질문을 하면 Vanna가 해당 SQL 쿼리를 반환합니다. 이러한 쿼리는 데이터베이스에서 자동으로 실행되어 복잡한 데이터베이스 작업을 간소화할 수 있으며, Vanna는 PostgreSQL, MySQL, Snowflake 등 다양한 데이터베이스를 위한 다양한 LLM(대규모 언어 모델)과 벡터 스토리지 솔루션을 지원합니다.

Vanna:利用RAG技术将文本生成精准SQL查询

 

Vanna:利用RAG技术将文本生成精准SQL查询

 

기능 목록

  • SQL 생성자연어를 통해 정확한 SQL 쿼리를 생성합니다.
  • RAG 모델 트레이닝사용자는 특정 데이터에 맞게 자체 RAG 모델을 학습시킬 수 있습니다.
  • 멀티-LLM 지원OpenAI, Anthropic, HuggingFace 및 기타 여러 LLM과 호환됩니다.
  • 멀티 벡터 스토리지 지원AzureSearch, PineCone, ChromaDB 및 기타 벡터 저장소 지원.
  • 다중 데이터베이스 지원PostgreSQL, MySQL, Snowflake 및 기타 여러 데이터베이스와 호환됩니다.
  • 사용자주피터 노트북, 스트림릿, 플라스크 및 기타 사용자 인터페이스를 제공합니다.

 

도움말 사용

설치 프로세스

  1. Vanna 설치: pip를 사용하여 Vanna를 설치합니다.
   pip install vanna
  1. 옵션 패키지 설치필요에 따라 다른 옵션 패키지를 설치하며, 자세한 내용은 설명서를 참조하세요.

사용 프로세스

  1. Vanna 가져오기: 사용된 LLM 및 벡터 데이터베이스에 따라 적절한 모듈을 가져옵니다.
   from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})
  1. RAG 모델 학습필요에 따라 교육 명령을 실행합니다.
   vn.train(ddl_statements)
  1. SQL 쿼리 생성질문을 하면 Vanna가 적절한 SQL 쿼리를 반환합니다.
   sql_query = vn.ask("给我所有客户的名字")

세부 기능 작동

  • SQL 생성사용자가 자연어로 질문을 입력하면 Vanna가 자동으로 SQL 쿼리를 생성합니다. 예를 들어 "내 모든 고객 이름 알려줘"라고 입력하면 Vanna가 해당 SQL 쿼리를 생성합니다.
  • RAG 모델 트레이닝사용자는 데이터를 기반으로 RAG 모델을 학습시켜 SQL 생성의 정확도를 향상시킬 수 있습니다. 훈련 과정에는 Vanna가 데이터베이스의 구조와 관계를 이해할 수 있는 DDL 문을 제공하는 것이 포함됩니다.
  • 멀티-LLM 지원Vanna는 광범위한 대규모 언어 모델과 호환되므로 사용자는 필요에 따라 SQL 생성에 적합한 모델을 선택할 수 있습니다.
  • 멀티 벡터 스토리지 지원Vanna는 다양한 벡터 스토리지 솔루션을 지원합니다.
  • 다중 데이터베이스 지원Vanna는 다양한 데이터베이스와 호환되며 사용자가 데이터베이스 유형에 따라 구성하여 사용할 수 있습니다.
  • 사용자Vanna는 다양한 사용자 인터페이스를 제공하며, 사용자는 주피터 노트북, 스트림릿, 플라스크 등의 인터페이스를 선택하여 편리하게 사용할 수 있습니다.

샘플 코드(컴퓨팅)

아래는 Vanna를 사용하여 SQL 쿼리를 생성하는 방법을 보여주는 전체 샘플 코드입니다:

from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})
# 训练RAG模型
vn.train(ddl_statements)
# 生成SQL查询
sql_query = vn.ask("给我所有客户的名字")
print(sql_query)

 

SQL 생성에서 함수 RAG란 무엇인가요?

Vanna는 SQL 생성의 획기적인 기능인 함수(Function) RAG (검색 강화 생성). 이 새로운 실험적 옵션 기능은 사용자들의 많은 요청을 충족하기 위해 SQL 생성의 일관성과 결정성을 향상시키기 위해 설계되었습니다.

함수 RAG란 무엇인가요?

함수 RAG는 기존의 질문-SQL 학습 쌍을 호출 가능한 템플릿(일명 함수/도구)으로 변환합니다. 그런 다음 대규모 언어 모델(LLM)이 이러한 템플릿을 호출하여 SQL 쿼리와 관련 후처리 코드(예: 차트 코드)를 생성합니다. 결정적으로, 함수 RAG를 사용할 때 대규모 언어 모델(LLM)은 사용할 SQL 템플릿과 제공해야 하는 매개변수만 결정합니다. 이 접근 방식은 보다 일관된 출력을 보장할 뿐만 아니라 SQL 생성 프로세스의 속도를 크게 높여줍니다.

핵심 오픈 소스 Python 패키지와 구분하기 위해 다른 도메인과 브랜드로 Function RAG API를 출시합니다.

Function RAG의 주요 기능

  • 템플릿 기반 SQL 생성함수 RAG는 학습 쌍을 템플릿으로 변환하여 생성된 SQL이 정확하고 사용자의 쿼리와 관련성이 있는지 확인합니다.
  • 강화된 보안함수 RAG는 힌트 주입 및 힌트 이스케이프를 줄여 SQL 생성 프로세스가 외부 조작으로부터 보호되도록 합니다.
  • 사용자별 쿼리이제 사용자는 데이터를 덮어쓸 위험 없이 쿼리에서 사용자 ID와 같은 정보를 전달할 수 있습니다. 따라서 "최근 주문 10건은 무엇인가요?"와 같은 개인화된 질문을 안전하고 효율적으로 실행할 수 있습니다. .
  • 통합 차트 코드 생성함수 RAG는 SQL 외에도 차트 코드 생성을 처리하므로 한 번의 요청으로 SQL과 그에 해당하는 시각화 코드를 생성할 수 있습니다.
  • 다국어 지원이 기능은 GraphQL API를 통해 액세스할 수 있으므로 Python뿐만 아니라 모든 프로그래밍 언어에서 사용할 수 있습니다. 따라서 Ruby on Rails와 같은 프레임워크를 비롯한 다양한 백엔드에 통합할 수 있는 가능성이 열립니다.

실제 적용

예를 들어 다음은 몇 가지 샘플 함수입니다: Vanna:利用RAG技术将文本生成精准SQL查询

질문할 때vn.get_function(question=...)<span> </span> 가장 적합한 함수를 찾고 필요한 매개변수를 LLM(대규모 언어 모델)을 사용하여 채웁니다. Vanna:利用RAG技术将文本生成精准SQL查询

문제를 특정 사용자로 제한하려면 다음과 같이 사용할 수 있습니다. vn.get_function(question=..., additional_data={"user_id": ...})<span> </span> 메소드. 이렇게 하면 user_id<span> </span> 매개 변수는 결정론적으로 설정됩니다.

새 함수를 만들려면 수동으로 수행하는 경우 다음을 사용할 수 있습니다. vn.create_function(...)<span> </span> 메서드를 사용하거나 기본 제공 웹 애플리케이션을 사용하여 이 작업을 수행할 수 있습니다.

수동으로 생성

vn.create_function(question=..., sql=..., plotly_code=...)

웹 애플리케이션 함수 생성

웹 애플리케이션에는 결과를 원시 질문-SQL 쌍으로 학습할지 함수로 학습할지 선택할 수 있는 새로운 버튼이 있으며, 함수 RAG는 질문에서 매개변수처럼 보이는 것을 자동으로 추출하여 함수 매개변수로 사용할 수 있도록 합니다.

Vanna:利用RAG技术将文本生成精准SQL查询

사용 시기

최종 사용자가 비슷한 질문을 하는 변형이 있고 사용자가 엔지니어링 팀에서 수동으로 승인한 특정 유형의 분석만 실행할 수 있도록 하려는 경우, Function RAG는 사용자가 승인된 분석만 실행할 수 있도록 하는 좋은 방법입니다.

승인된 분석으로 제한하면 최종 사용자가 올바른 데이터를 올바른 방식으로 보고 있다는 확신을 가질 수 있습니다. 이를 SaaS 애플리케이션에 통합하면 내부 비즈니스 사용자 또는 최종 사용자에게 제공할 수 있습니다.

모든 사용자는 Function RAG가 제공하는 속도 개선의 이점을 누릴 수 있습니다. 그러나 데이터 분석가의 경우, 대량의 학습 데이터에 존재하지 않는 새로운 분석을 수행할 때 Vanna의 나머지 SQL 생성 기능으로 되돌아가고 싶을 수 있습니다. Vanna에서 호스팅하는 벡터 데이터베이스를 사용하는 경우, 폴백 기능은 기본 제공 웹 애플리케이션에 매개변수를 사용하여 자동으로 포함됩니다. function_generation=True<span> </span>.

GraphQL API 통합

Python 패키지 외에도 GraphQL API를 사용하여 함수 RAG를 호출할 수 있으므로 다른 언어와 프레임워크에서 사용할 수 있습니다. 가장 많이 받는 요청은 Ruby on Rails에서 사용할 수 있게 해달라는 것입니다.

사용성

Function RAG는 Vanna의 무료, 프리미엄 및 엔터프라이즈 에디션 요금제의 일부로 제공됩니다. Function RAG는 Vanna에서 찾을 수 있습니다. v0.6.0<span> </span> 이후 버전에서 액세스할 수 있습니다.

© 저작권 정책
AiPPT

관련 문서

댓글 없음

없음
댓글 없음...