AI의 본질과 대규모 언어 모델(LLM)
현대 AI 담론의 중심인 LLM은 방대한 비정형 데이터를 컴퓨터가 처리할 수 있는 형식으로 렌더링하는 도구입니다. 강연자 Valerie Woolard는 LLM을 ‘고도로 발전된 자동 완성 시스템’으로 정의하며, 인간의 뇌처럼 논리적으로 사고하는 것이 아니라 다음에 올 가장 적절한 단어를 예측하는 방식으로 작동한다고 설명합니다. 이는 AI가 생성한 결과물에 대한 비판적 수용이 필요함을 의미하며, 특히 할루시네이션(환각)이나 편향성 문제에 주의해야 합니다. 가트너 하이프 사이클에 따르면 현재 AI는 과도한 기대치를 지나 실질적인 구현의 어려움을 겪는 ‘환멸의 계곡’ 단계에 있을 수 있지만, 이 시기에 기술의 실질적인 활용 방안을 찾는 것이 중요합니다.
벡터(Vector)와 임베딩: AI의 데이터 언어
벡터는 텍스트, 이미지, 오디오와 같은 복잡한 데이터를 수치 리스트로 표현한 것입니다. 이를 통해 비정형 데이터는 N차원 공간상의 한 점으로 매핑되며, 의미적으로 유사한 데이터들은 공간상에서 서로 가까운 거리에 위치하게 됩니다.
- 임베딩 모델: Hugging Face의 Sentence Transformers나 OpenAI의 모델을 사용하여 텍스트를 고차원 벡터로 변환합니다. 차원이 높을수록 모델의 복잡도와 정확도가 향상되는 경향이 있습니다.
- 유사도 계산: 유클리드 거리(Euclidean Distance)나 코사인 유사도와 같은 수학적 공식을 사용하여 데이터 간의 거리를 측정합니다. 개발자는 복잡한 수학을 직접 수행하기보다 PG Vector와 같은 도구를 통해 이를 자동화할 수 있습니다.
Ruby 생태계의 AI 도구 및 데이터베이스
비록 Python이 AI 분야에서 주류 언어이지만, Ruby 개발자들도 활용할 수 있는 강력한 도구들이 존재합니다.
- PG Vector: PostgreSQL의 확장 기능으로, 관계형 데이터베이스 내에 벡터 타입을 저장하고 유사도 검색을 수행할 수 있게 해줍니다. 기존의 SQL 쿼리와 벡터 검색을 결합할 수 있다는 점이 가장 큰 장점입니다.
- 주요 Gem:
pgvector-ruby(Active Record 지원),neighbor(유사도 검색 간소화),ruby-openai(OpenAI API 연동),informers(로컬 임베딩 생성) 등이 있습니다. - 데이터베이스 선택지: 전용 벡터 DB인 Pinecone 외에도 SQLite 환경을 위한
sqlite-vec등을 고려할 수 있습니다.
실전 활용: 유사도 검색과 RAG
강연자는 도서 추천 시스템을 예로 들어 벡터 검색의 유동성을 설명합니다. 사용자가 “기발하고 마법 같은 리얼리즘 우화”를 찾는다고 입력하면, 시스템은 이 문장을 벡터화한 뒤 데이터베이스 내의 도서 설명 벡터들과 비교하여 가장 가까운 도서를 찾아냅니다.
더 나아가 RAG(Retrieval Augmented Generation, 검색 증강 생성) 기법을 사용하면 검색 결과의 정확도를 높일 수 있습니다. 이는 검색된 문서의 내용을 LLM의 프롬프트에 컨텍스트로 포함시켜, AI가 단순히 학습된 지식에 의존하지 않고 제공된 데이터를 바탕으로 보다 정확하고 인간적인 답변을 생성하도록 유도하는 방식입니다. 이를 통해 개인화된 추천 이유를 작성하거나 특정 도메인 지식에 기반한 답변을 제공하는 것이 가능해집니다.