SurrealQL — SQL에 그래프 탐색과 벡터 검색을 얹은 쿼리

SurrealQL

SurrealDB를 쓰는 가장 직접적인 방법은 SurrealQL로 데이터를 읽고 쓰는 거예요. SurrealQL은 SQL의 형태를 유지하면서 그래프의 재귀 탐색, 벡터 유사도 함수, 중첩 문서 접근을 하나로 합친 쿼리 언어예요. 이미 SELECT, CREATE, UPDATE, DELETE를 안다면 진입 장벽이 아주 낮아요.

기본 쿼리 예시

-- 레코드 생성
CREATE person:john SET name = 'John', age = 30;

-- 조건 조회
SELECT name, age FROM person WHERE age > 25;

-- 그래프: 관계 따라가기 (화살표 문법)
SELECT ->friend->name FROM person:john;

-- 벡터 유사도 검색
SELECT * FROM memories ORDER BY embedding <|> $query_vec LIMIT 5;
  • 그래프 경로: 화살표 문법(->edge->)으로 엣지를 따라 이웃을 탐색해요.
  • 중첩 필드: 점 표기법으로 문서 안의 깊은 필드에 접근해요.
  • 벡터: 유사도 함수(<|>)로 임베딩 벡터의 최근접 이웃을 찾아요.

하나의 문장으로 검색·탐색·필터

SurrealDB 한 문장이 의미적으로 유사한 문서를 찾고, 그 문서가 언급하는 엔티티로 그래프를 걷고, 구조화된 필드로 필터링하는 일을 한 번에 할 수 있어요. 두 번째 저장소나 왕복(round trip) 없이 가능해서, RAG와 Graph RAG 패턴을 매우 간결하게 만듭니다.

더 알아보기