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 확장의 주요 기능
-
벡터 임베딩 자동 생성 및 동기화: 기존 데이터베이스에 텍스트 데이터를 저장하면, 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') );
-
벡터 및 의미 기반 검색: 벡터 검색을 활용하여 의미적으로 유사한 문서를 찾을 수 있습니다.
SELECT title, chunk FROM my_table_embeddings ORDER BY embedding <=> ai.ollama_embed('all-minilm', 'properties of light') LIMIT 1;
-
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;
-
다양한 AI 모델 지원: pgAI는 여러 LLM 모델을 지원하며, SQL에서 직접 호출할 수 있습니다.
모델 임베딩 채팅 응답 생성 OpenAI GPT4o Cohere Command Ollama Llama 3 예를 들어, OpenAI의 GPT-4o를 SQL에서 직접 호출할 수도 있습니다.
SELECT ai.openai_generate('gpt-4o', 'Summarize this text: ...');
라이선스
pgAI 프로젝트는 PostgreSQL 라이선스로 공개되어 있습니다. 사용 / 복사 / 수정 및 배포가 자유롭게 허용되나, 제작자는 이 소프트웨어의 사용으로 발생하는 어떠한 손실에 대해서도 책임지지 않으며, 유지보수나 지원/업데이트 제공 등의 의무가 없습니다. 자세한 내용은 라이선스 원문을 참고해주세요.
pgAI GitHub 저장소
Timescale의 pgAI 소개 글
pgAI 사용을 위한 문서 모음
빠른 시작 가이드
pgAI 벡터라이저 관련 튜토리얼
pgAI 모델 호출 관련 튜토리얼
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~