pgAI: PostgreSQL의 인공지능 기능을 위한 확장 (feat. Timescale)

pgAI 소개

pgAI는 PostgreSQL에 AI 기능을 추가할 수 있는 확장(extension) 모듈입니다. 이 확장 모듈을 활용하면 벡터 임베딩을 자동으로 생성하고, SQL에서 직접 의미 기반 검색을 수행할 수 있으며, LLM을 호출하여 Retrieval Augmented Generation(RAG)과 같은 작업을 수행할 수도 있습니다. 특히, OpenAI, Ollama, Cohere 등의 다양한 모델을 SQL 쿼리로 간편하게 호출할 수 있어 개발자가 별도의 API를 직접 호출하지 않아도 되는 점이 특징입니다.

pgAI가 제공하는 기능들은 다음과 같습니다:

  • 벡터 임베딩 자동 생성 및 동기화: 데이터 변경이 발생할 때 자동으로 벡터를 업데이트하여 최신 상태 유지

  • 벡터 및 의미 기반 검색 (Vector & Semantic Search) 지원: pgvector 및 pgvectorscale을 활용하여 빠르고 확장 가능한 벡터 검색 가능

  • Retrieval Augmented Generation(RAG) 지원: SQL 내에서 AI 모델을 호출하여 문서 기반의 질문 응답 가능

  • SQL에서 직접 LLM 호출 가능: OpenAI, Ollama, Cohere 등 다양한 AI 모델을 SQL 쿼리로 호출

PostgreSQL의 안정성과 확장성을 그대로 유지하면서 AI 모델을 활용할 수 있기 때문에 AI 기반 검색 시스템, 챗봇, 데이터 분석 등 다양한 분야에서 활용이 가능합니다.

pgAI 확장의 주요 기능

  1. 벡터 임베딩 자동 생성 및 동기화: 기존 데이터베이스에 텍스트 데이터를 저장하면, pgAI는 이를 자동으로 벡터화하여 벡터 테이블에 저장합니다. 데이터가 변경될 경우 벡터 임베딩도 자동으로 업데이트됩니다.

    SELECT ai.create_vectorizer(
        'my_table'::regclass,
        destination => 'my_table_embeddings',
        embedding => ai.embedding_ollama('all-minilm', 384),
        chunking => ai.chunking_recursive_character_text_splitter('text')
    );
    
  2. 벡터 및 의미 기반 검색: 벡터 검색을 활용하여 의미적으로 유사한 문서를 찾을 수 있습니다.

    SELECT title, chunk
    FROM my_table_embeddings 
    ORDER BY embedding <=> ai.ollama_embed('all-minilm', 'properties of light')
    LIMIT 1;
    
  3. Retrieval Augmented Generation(RAG): SQL 내에서 AI 모델을 활용하여 데이터를 검색하고 요약할 수 있습니다.

    CREATE OR REPLACE FUNCTION generate_rag_response(query_text TEXT)
    RETURNS TEXT AS $
    DECLARE
        context_chunks TEXT;
        response JSONB;
    BEGIN
        -- 유사한 데이터를 검색
        SELECT string_agg(title || ': ' || chunk, E'\n') INTO context_chunks
        FROM (
            SELECT title, chunk
            FROM my_table_embeddings
            ORDER BY embedding <=> ai.ollama_embed('all-minilm', query_text)
            LIMIT 3
        ) AS relevant_posts;
    
        -- LLM을 사용하여 질문에 대한 응답 생성
        SELECT ai.ollama_generate('tinyllama', query_text || E'\nUse the following context to respond.\n' || context_chunks)
        INTO response;
    
        RETURN response->>'response';
    END;
    $ LANGUAGE plpgsql;
    
  4. 다양한 AI 모델 지원: pgAI는 여러 LLM 모델을 지원하며, SQL에서 직접 호출할 수 있습니다.

    모델 임베딩 채팅 응답 생성
    OpenAI GPT4o :white_check_mark: :white_check_mark: :x:
    Cohere Command :white_check_mark: :white_check_mark: :x:
    Ollama Llama 3 :white_check_mark: :white_check_mark: :white_check_mark:

    예를 들어, OpenAI의 GPT-4o를 SQL에서 직접 호출할 수도 있습니다.

    SELECT ai.openai_generate('gpt-4o', 'Summarize this text: ...');
    

라이선스

pgAI 프로젝트는 PostgreSQL 라이선스로 공개되어 있습니다. 사용 / 복사 / 수정 및 배포가 자유롭게 허용되나, 제작자는 이 소프트웨어의 사용으로 발생하는 어떠한 손실에 대해서도 책임지지 않으며, 유지보수나 지원/업데이트 제공 등의 의무가 없습니다. 자세한 내용은 라이선스 원문을 참고해주세요.

:github: pgAI GitHub 저장소

:scroll: Timescale의 pgAI 소개 글

:books: pgAI 사용을 위한 문서 모음

빠른 시작 가이드

pgAI 벡터라이저 관련 튜토리얼

pgAI 모델 호출 관련 튜토리얼




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요

DB개발에서 수많은 사람들이 SQL 문법에 좌절하는데 좋은 소식이네요. SQL은 별거 아닌데 상당히 까다롭는데 이제 인공지능이 이걸 해결하면 전체 시스템 개발에 빠르게 많은 도움이 될것 같네요,

1개의 좋아요

네네 VectorDB뿐만 아니라 RDBMS들에도 Text2SQL을 포함하여 점점 더 많은 기능들이 들어가고 있어 관심도 가고 걱정도 되고(?) 하네요 :sweat_smile: