Release Notes
v1.3.0 (2024-07-13)
신규 기능
- 전체 텍스트 검색 쿼리에 대한 임시 사용자 정의 불용어 지원 추가
- 전체 텍스트 검색 쿼리는 이제 분석기 구성에 정의되지 않은 임시 사용자 정의 불용어를 지원합니다.
- 사용자 정의 불용어는
$search
연산자에서custom_stop_words
속성을 사용하여 쿼리에서 지정할 수 있습니다.
- 전체 텍스트 검색 쿼리에 대한 임시 사용자 정의 동의어 지원 추가
- 전체 텍스트 검색 쿼리는 이제 분석기 구성에 정의되지 않은 임시 사용자 정의 동의어를 지원합니다.
- 사용자 정의 동의어는
$search
연산자에서custom_synonyms
속성을 사용하여 쿼리에서 지정할 수 있습니다.
- 시스템 메트릭 API 추가
- 이 API는 CPU, 메모리, 디스크 및 네트워크 사용량과 같은 시스템 자원에 대한 정보를 제공하도록 설계되었습니다. 그러나 현재 구현은 버전 정보만 제공합니다.
- CLI에
export
명령 추가 export
명령을 사용하면 데이터베이스 컬렉션의 데이터를 JSON Lines 형식의 파일로 내보낼 수 있습니다.- 밀집 벡터 인덱스에 대한 벡터 배열 지원 추가
- 밀집 벡터 인덱스는 이제 필드 값으로 벡터 배열을 지원합니다. 임베딩 모델은 일반적으로 짧은 텍스트와 함께 작동하므로 벡터 배열을 사용하여 단일 문서에 여러 임베딩을 저장할 수 있습니다. 이 기능이 없으면 사용자는 각 임베딩을 별도의 문서에 저장해야 했으며, 이는 비효율적이었습니다. 이 기능은 실험적이며 향후 변경될 수 있습니다.
성능 개선
- 밀집 벡터 필드를 포함하는 전체 텍스트 검색 인덱스의 성능이 향상되었습니다.
동작 변경
- 변경 사항 없음
버그 수정
- 쿼리 실행 관련 버그 수정
- 조인 키가 오른쪽 컬렉션에서 중복될 때
$join
연산자가left
또는right
타입으로 올바르게 작동하지 않는 문제를 수정했습니다. 이 경우 일부 문서가 결과에서 누락되었습니다. $limit
연산자가 음수 값을 가질 때 올바르게 작동하지 않는 오류를 수정했습니다. 이 경우 쿼리는 모든 문서를 반환해야 하지만 빈 결과를 반환했습니다.
- 조인 키가 오른쪽 컬렉션에서 중복될 때
- 전체 텍스트 검색 관련 버그 수정
- 쿼리에 여러 용어가 포함된 경우 하이라이터가 올바르게 작동하지 않는 문제를 수정했습니다.
v1.2.0 (2024-06-01)
신규 기능
- HNSW-IVF 인덱스가 인덱스 데이터를 메모리에 로드하는 대신 기본 key-value 저장소를 직접 사용하도록 개선되었습니다.
- 이 변경 사항은 HNSW-IVF 인덱스가 더 작은 메모리 사용량으로 더 큰 인덱스를 처리할 수 있게 합니다.
- 인덱스 생성 프로세스를 재개할 수 있도록 개선되었습니다.
- 인덱스 생성 프로세스가 중단되면 마지막 체크포인트에서 다시 시작할 수 있습니다.
성능 개선
- 캐시된 블록을 더 적극적으로 해제하여 블록 캐시의 메모리 사용량을 줄였습니다.
- 쿼리 캐시를 구현하여 전체 텍스트 검색의 성능을 개선했습니다.
- 토큰화 과정을 최적화하여 텍스트 분석 파이프라인의 성능을 개선했습니다.
- 데이터 로딩 절차를 최적화하여 인덱스 생성의 성능을 개선했습니다.
동작 변경
KeywordAnalyzer
가 배열 타입 필드를 지원하도록 업데이트되었습니다. 배열의 요소를 별도의 토큰으로 토큰화합니다.DenseVectorAnalyzer
가 null 값 필드를 지원하도록 업데이트되었습니다. null 값 필드는 HNSW 인덱스에 인덱싱되지 않습니다.- 인덱스를 생성할 때 인덱스 유형의 유효성 검사 프로세스를 추가했습니다.
버그 수정
- 전체 텍스트 검색 관련 버그 수정
- 전체 텍스트 검색 쿼리에서 ASCII가 아닌 필드 이름과 쿼리 파서가 올바르게 작동하지 않는 버그를 수정했습니다.
- 일부 경우에 전체 텍스트 검색 쿼리를 잘못 최적화하던 쿼리 플래너의 버그를 수정했습니다.
- 스토리지 엔진 관련 버그 수정
- 종료 과정에서 compaction 필터의 오류로 드물게 발생하던 크래시를 수정했습니다.
v1.1.0 (2024-05-01)
신규 기능
- Full-text search 성능 개선하였습니다.
- Full-text search 쿼리에서 multi-field term 기능을 추가되었습니다.
{!fields=[field1, field2]}:(term1 AND term2)
는field1:(term1 AND term2) field2:(term1 AND term2)
로 해석.
- 순서를 고려하지 않는 근접 검색 기능을 지원.
"term1 term2"~~5
는term1
와term2
가 순서에 상관없이 서로 5단어 이내에 있는 문서를 검색합니다.
- Full-text search 쿼리에서 multi-field term 기능을 추가되었습니다.
$project
연산자에서 중첩된 객체를 평면화(unnest) 할 수 있습니다.^
접두어는 객에나 배열을 평면화 하는데 사용할 수 있습니다.$project: ["^field1.field2", "field3"]
는 평면화된field1.field2
와 변경 없는field3
를 의미합니다.
- 쿼리 파서에서 이제
did you mean?
기능이 추가됩니다.- 만약 쿼리 파서에서 인식되지 않는 연산자가 있다면 유사한 연산자를 추천하게 됩니다.
성능 개선
- 색인 생성 과정에서 동시성 제어를 완화하여 full-text search 색인 생성 성능을 개선되었습니다.
동작 변경
$search.timeout
의 기본값이5,000
에서10,000
로 변경됩니다, 기본 검색 쿼리는10초
이후에 만료됨을 의미합니다.$limit
연산자의 값을-1
로 설정하여 단일 쿼리에서 반환할 수 있는 최대 문서 수를 늘릴 수 있습니다. 최대 반환할 수 있는 문서의 수는 인덱스의 구성, 쿼리의 복잡성, 시스템의 리소스에 의존합니다. 예를 들어, full-text search 색인에서 반환할 수 있는 최대 문서수는10,000,000
개이며 다른 색인의 경우 시스템 리소스가 허용하는 범위 내에서는 한계가 없습니다.$search.highlight
옵션에 의해 생성된_highlights
필드에 대해$recursive_unnest
연산자를 사용할 때_score
필드도 평면화에 포함됩니다.
버그 수정
- Full-text search의 버그가 수정되었습니다.
- highlighter가 배열 타입 필드에 대해서 정상적으로 동작하지 않은 버그를 수정함.
- DocumentDB의 버그가 수정되었습니다.
- 중첩된 필드와 함께
$project
연산자가 제대로 작동하지 않는 버그를 수정함. - 부동 소수점 숫자와 함께
$sort
연산자가 제대로 작동하지 않는 버그를 수정함. - 다단계 파이프라인 쿼리에서
$skip
및$limit
연산자가 제대로 작동하지 않는 버그를 수정함.
- 중첩된 필드와 함께
v1.0.0 (2024-04-11)
Aeca Server의 첫 번째 안정된 릴리스입니다. 다음 기능들을 제공합니다:
- Key-Value Database
- 기본적인 CRUD 연산자
- Transactions
- Key-level Time-to-Live (TTL) support
- Document-oriented Database
- 기본적인 CRUD 연산자
- Transactions
- Secondary indexes
- Unique와 non-unique 색인
- Clustered와 non-clustered 색인
- 부분 색인
- 전체 기능을 지원하는 텍스트 검색 색인
- Dense vector를 위한 유사도 검색 색인
- 색인 레벨에서의 Time-to-Live (TTL) 지원
- 쿼리 레이어에서 Python scripting을 지원
- Language model serving
- Touch 기반의 사용자 언어모델 배포 기능