Release Notes

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"~~5term1term2가 순서에 상관없이 서로 5단어 이내에 있는 문서를 검색합니다.
  • $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 기반의 사용자 언어모델 배포 기능