[주요 내용]
1. 데이터 과학과 프롬프트 엔지니어링
2. AI민주화를 위한 차세대 DBMS SingleStoreDB
3. 생성형 인공지능(Generative AI)과 벡터 데이터베이스(Vector Database)
4. 기존 벡터데이터베이스의 제약
5. 벡터데이터베이스를 지원하는 SingleStore의 특징
5.1. SingelStoreDB를 이용한 AI 애플리케이션 구축 활용
5.2. AI 개발에 적합한 SingleSotre의 특징
6. SingleStoreDB를 이용한 Vector 연산 예시
1. 데이터 과학과 프롬프트 엔지니어링
chatGPT로 인해 앞으로 인공 지능의 영역은 다음 두 가지 영역으로 나누어 접근할 수 있습니다.
- 데이터 과학(학문적/전문성)
: 학문적이고 전문성을 요구로 하는 인공지능 전문 분야 (머신러닝, 딥러닝의 데이터 분석)
- 프롬프트 엔지니어링 (생성형 AI 서비스대중화)
: AI 민주화에 따른 대중화된 서비스 AI 응용 개발 분야 ( LLM을 기반으로 서비스에 활용)
최근 몆 년 동안 AI 분야는 데이터 과학(Data Science)라고 하면서 대규모 머신 장비와 고급 기술자(데이터사이언티스트)를 투입하여 방대한 데이터를 분석하는데 활용했습니다. 이는 학문적이고 전문가에 의한 인공지능 분야로 데이터 분석 분야가 대부분을 차지해 왔습니다.
chatGPT와 같은 프롬프트 엔지니어링 분야는 이제는 이러한 데이터사이언스 (Data Science)를 기반으로 한 데이터를 연구하는 인공지능 영역과 별개로 인공지능을 이용한 생활의 편의 서비스를 만들거나 문서, 언어의 특성을 이해하도록 만든 LLM을 이용하는 생성형 AI 서비스 영역이 부각되고 있습니다.
chatGPT의 등장으로 AI민주화라는 용어가 현실화되었습니다. 지금 인터넷 서비스 전반에서 AI를 활용하는 움직임을 보면 엄청난 변화로 보입니다.
지금이야 말로 인공지능의 부흥기라고 여겨질 만큼 많은 기업들이 AI는 서비스의 필수조건으로 인식하게 되었습니다. AI를 기반으로 한 서비스 분야는 인터넷의 혁명을 초월하여 새로운 패러다임을 만들 것 같습니다.
오늘은 이러한 변화에서 지속적인 기술을 접목할 수 있는 SingleStore DBMS를 소개하고자 합니다.
2. AI민주화를 위한 차세대 DBMS SingleStoreDB
SingleStoreDB는 최근 기술 트렌드에 맞춰진 최적의 Database라고 할 만큼 인공지능과 연결한 기술의 확장을 강조하고 있습니다.
주로 Cloud Native 플랫폼을 지원하면서 대량의 데이터를 처리할 수 있는 분산 DB이라는 점에서 활용 가능성이 큽니다.
그리고 최근 인공지능 분야에서 각광받고 있는 LangChain과 같이 LLM과 ChatGPT를 연계할 수 있고, SingleSotre Co-Pilot인 (SQrL)과 같은 기술을 제공하여 인공지능 환경에 최적화된 DBMS로 영역을 넓혀 가고 있습니다.
3. 생성형 인공지능(Generative AI)과 벡터 데이터베이스(Vector Database)
RAG(Retrieval-Augmented Generation)은 생성형 AI 모델의 한 유형으로, 정보 검색 및 생성을 결합하여 더 풍부하고 정확한 결과를 얻을 수 있도록 설계된 모델입니다. 주로 자연어 처리 및 이해, 질문 응답 시스템, 대화형 AI 등 다양한 응용 분야에서 활용됩니다.
생성형 인공지능은 주로 기계 학습 및 신경망 기술을 활용하여 콘텐츠를 생성하거나 변형하는 데 사용됩니다. 이는 이미지, 텍스트, 음성 및 비디오 생성에 적용될 수 있으며, GPT-3와 같은 모델이 대표적인 예입니다. 이러한 모델은 주어진 데이터를 학습하고, 주어지지 않은 데이터를 생성하는 데 사용됩니다.
벡터 데이터베이스는 데이터를 벡터 형식으로 저장하고 검색하는 데 사용되는 데이터베이스 시스템입니다. 벡터 데이터베이스는 고차원 데이터와 관련된 복잡한 검색 및 분석 문제를 해결하는 데 도움이 됩니다. 이러한 데이터베이스는 유사성 검색, 검색 쿼리 최적화, 정보 검색 및 패턴 인식 분야와 더불어 인공지능 분야에서도 중요한 역할을 합니다.
특히 LLM과 같이 텍스트 데이터를 처리하고 데이터 간의 유사성을 분석하는 데는 벡터 데이터베이스를 활용하는 것이 용이합니다.
RAG를 이용한 질의응답 시스템 구성 과정
RAG는 검색과 생성형 AI를 조합하여 다양한 작업에 유용한 결과를 제공할 수 있습니다.
첫 번째는 문서를 이용하여 지식 구축하고 정보 검색 단계로, 검색 가능한 문서 또는 지식 베이스에서 관련된 정보를 검색합니다. 이를 통해 모델은 풍부한 정보에 접근하여 특정 주제나 질문에 대한 이해를 높일 수 있습니다.
두 번째는 생성 단계로, 검색된 정보를 기반으로 문장, 답변, 또는 설명 등을 생성합니다. 이때 생성된 결과물은 검색된 정보를 토대로 논리적이고 의미 있는 내용을 가집니다. LLM(Large Language Model) 기반의 생성 모델을 사용하여 자연스러운 텍스트를 생성할 수 있습니다.
4. 기존 벡터 데이터베이스(Vector Database)의 제약
기존의 관계형 데이터베이스가 행과 열에 데이터를 저장하는 것과 NoSQL과 같은 데이터베이스가 JSON 문서에 데이터를 저장하는 방식과 유사하게, 벡터 데이터베이스는 벡터라 불리는 숫자 값의 배열을 저장하고 관리합니다.
이러한 벡터는 주로 단어나 단락을 나타내는 숫자를 저장하는데 사용되며, 특히 임베딩이라고도 불립니다.
벡터 데이터베이스는 SVDB(특수 벡터 데이터베이스)로 불리며, 주로 벡터 데이터를 저장하고 처리하기 위해 특별히 설계되어 데이터의 유사성을 검색하고 관리하는 데 최적의 기술로 인식되고 있습니다.
그러나 벡터데이터베이스(SVDB)에는 몇 가지 제한 사항이 존재합니다. 이에는 중복된 데이터 처리, 분산된 구성 요소 간의 데이터 값에 대한 합의 부족, 전문 기술을 위한 기술 인력의 부족 등이 포함됩니다.
또한 벡터데이터베이스는 일반적인 데이터베이스 관리 시스템에 비해 쿼리 언어 성능, 프로그래밍 용이성, 확장성 및 데이터 무결성 관리 등에서 제약이 발생하는 경우가 많습니다.
과도한 데이터 이동시 부하와 전문 기술자 인건비 및 라이선스 비용 증가, 쿼리 성능 제한 등에 따르는 운영 비용의 문제도 고려되어야 합니다.
5. 벡터데이터베이스를 지원하는 SingleStore의 특징
반면 SingleStoreDB는 일반 적인 표준 SQL을 이용하여 쉽게 이용할수 있고, 데이터 집약적인 사용에도 적합한 강력한 벡터 데이터베이스 기능을 내장하고 있습니다.
1) SQL의 표준을 이용하여 누구나 쉽게 이용 가능합니다.
- SQL을 이용하여 강력한 메타데이터 필터링, 벡터 및 전체 텍스트 검색 기능에 위상 공간의 내적 / 벡터곱연산(dot_product) , 위상 거리 측정( Euclidean_distance)을 조합하여 유사성을 찾는 데 사용할 수 있습니다. 그리고 ORDER BY/LIMIT K 쿼리로 최근접 검색(K-Nearest-Neighbor Search)을 더 빠르게 수행할 수 있습니다.
2) 벡터데이터 베이스를 내장하고 있어서 관계형 데이터베이스와 연계하여 분석이 용이합니다.
- 강력한 벡터 데이터베이스 기능을 제공하므로 벡터 워크로드에만 특수 벡터 데이터베이스를 실행할 필요가 없습니다.
그리고 기존 벡터 데이터베이스와 달리 SingleStoreDB는 벡터 데이터를 다른 데이터 유형과 함께 관계형 테이블에 저장하고 관리할 수 있습니다.
5.1. SingelStoreDB를 이용한 AI 애플리케이션 구축 활용
SingleStore는 LLM 구축 시 다양한 문서를 파싱 하여 벡터 데이터 베이스로 저장하여 인공지능 애플리케이션을 구축하는데 탁월한 솔루션입니다.
SingleStoreDB는 벡터 데이터를 다른 유형의 데이터와 함께 관계형 테이블에 저장합니다.
벡터 데이터를 관련 데이터와 함께 배치하면 SQL의 모든 기능을 사용하여 벡터 데이터의 확장된 메타데이터 및 기타 속성을 쉽게 쿼리 할 수 있습니다.
또한 다음과 같은 추가 기능으로 애플리케이션을 쉽게 만들 수 있습니다.
ㅁ 성능과 용량 확장성
SingleStoreDB는 확장형 아키텍처로 설계되어 증가하는 데이터 요구 사항을 지원할 수 있는 용량을 보장합니다.
ㅁ 심층 쿼리 기능
SingleStoreDB에서는 SQL의 모든 쿼리 기능을 사용할 수 있으므로 벡터 근접성 및 설명 속성을 기반으로 하는 하이브리드 검색이 쉽습니다.
ㅁ Full-Text Search
의미 체계 검색 기능을 사용하면 쿼리에 포함된 단어뿐만 아니라 쿼리의 의미와 일치하는 텍스트를 찾을 수 있는 LLM 기반 애플리케이션을 구축할 수 있습니다.
ㅁ 확장 가능한 분석 성능
고성능 및 확장 기능을 통해 SingleStoreDB는 가장 까다로운 데이터베이스 요구 사항도 충족할 수 있습니다.
ㅁ 가장 가까운 이웃 검색
SingleStoreDB는 조인을 지원하므로 원하는 결과를 찾기 위해 여러 쿼리를 수행하는 대신 집합 기반 최근접 검색을 수행할 수 있습니다.
5.2. AI 개발에 적합한 SingleSotre의 특징
6. SingleStoreDB를 이용한 Vector 연산 예시
- "카테고리에 대한 상위 K 요소를 찾는 방법"
의미론적 검색, 챗봇, 기타 LLM 애플리케이션, 얼굴 매칭, 객체 매칭 등과 같은 최근접 검색 애플리케이션을 위한 벡터 처리 도구를 선택할 때 쿼리 언어의 성능과 SQL이용하는 것을 고려하면 더 쉽게 개발이 가능합니다.
SingleStoreDB의 단일 SQL 쿼리에서 "카테고리에 대한 상위 K 요소를 찾는 방법"은 다음과 같습니다.
1) 벡터 데이터를 저장합니다.
SingleStoreDB의 단일 SQL 쿼리에서 이 작업을 수행하는 방법은 다음과 같습니다.
/* Make some items in multiple categories, with associated
vector embeddings. */
create table items(id int, category varchar(50), vector blob);
insert into items values
(1, "food", json_array_pack('[0,0,0,1]')),
(2, "food", json_array_pack('[0,0.5,0.3,0.05]')),
(3, "food", json_array_pack('[0,0.5,0.2,0]')),
(4, "facilities", json_array_pack('[0,0,1,0]')),
(5, "facilities", json_array_pack('[0,0.6,0.1,0.05]')),
(6, "facilities", json_array_pack('[0,0.4,0.3,0]'));
2) 저장된 벡터에서 벡터를 조회합니다.
-- query vector
set @qv = json_array_pack('[0,0.4,0.3,0]');
-- get top 2 in each category using ranking
with scored as(
select id, category, dot_product(vector, @qv) as score
from items
),
ranked as (
select
row_number() over(partition by category order by score desc)
as rank, *
from scored
)
select *
from ranked
where rank <= 2
order by category, rank;
3) 실행 결과는 다음과 같습니다.
결과는 다음과 같습니다.
+------+------+------------+---------------------+
| rank | id | category | score |
+------+------+------------+---------------------+
| 1 | 4 | facilities | 0.30000001192092896 |
| 2 | 5 | facilities | 0.27000001072883606 |
| 1 | 2 | food | 0.2900000214576721 |
| 2 | 3 | food | 0.25999999046325684 |
+------+------+------------+---------------------+
[참고]
1. 생성형 AI를 위한 최적의 데이터 베이스 선정 방법
(Selecting the Optimal Database for Generative AI )
2. Why Your Vector Database Should Not be a Vector Database
https://www.singlestore.com/blog/why-your-vector-database-should-not-be-a-vector-database/
3. 벡터 데이터베이스 작업을 위한 SQL의 힘
https://www.singlestore.com/blog/the-power-of-sql-for-vector-database-operations-part-1/
'BigData' 카테고리의 다른 글
SQL 데이터 통계 분석을 강화하는 analytics - window functions (183) | 2023.12.05 |
---|---|
(기술)인공지능과 빅데이터 분석을 위한 고성능 분산DBMS SingleStoreDB (88) | 2023.11.19 |
인공지능 GPT4와 RAG를 이해하는데 알아야 하는 용어들 (121) | 2023.11.17 |
(AI프롬프트) LangChain과 LLM (Large Language Model)이 만드는 생성형 AI(Generative AI) (77) | 2023.11.07 |
chatGPT 와 채팅의 연결 (96) | 2023.10.13 |
chatGPT 환각(Hallucination) 개선을 위한 응답 품질 점검 - Check outputs (75) | 2023.10.09 |
ChatGPT의 자연스런 대화를 이어가는 - Chaining Prompts for conversational AI (100) | 2023.10.08 |