シェルスクリプトマガジン

特集2 ベクトル検索エンジンのVald(Vol.95記載)

著者:湯川 輝一朗

ベクトル検索エンジン「Vald」は、純国産のオープンソースソフトウエア(OSS)です。画像や音声などの非構造データを数値ベクトル化にして検索に利用します。クラウド上でも動作し、大規模な高速検索に向いています。ライセンスはApache License 2.0であり、無料利用が可能です。本特集では、Valdについて解説します。

シェルスクリプトマガジン Vol.95は以下のリンク先でご購入できます。

図7 values.yamlファイル

defaults:
  ## Log level
  logging:
    level: debug
  ## 利用するDockerイメージのtag(componentごとに個別設定も可能)
  image:
    tag: v1.7.16
  server_config:
    ## ヘルスチェックの設定
    healths:
      liveness:
        livenessProbe:
          initialDelaySeconds: 60
      readiness:
        readinessProbe:
          initialDelaySeconds: 60
    ## O11yのための設定
    servers:
        grpc:
          server:
            grpc:
                interceptors:
                - RecoverInterceptor
                - TraceInterceptor
                - MetricInterceptor
  ## 以下もO11yのための設定
  grpc:
    client:
      dial_option:
        interceptors:
          - TraceInterceptor
  observability:
    enabled: true
    otlp:
      collector_endpoint: "opentelemetry-collector-collector.default.svc.cluster.local:4317"
    trace:
      enabled: true
  networkPolicy:
    enabled: true
    custom:
      ingress:
        - from:
            - podSelector:
                matchLabels:
                  app.kubernetes.io/name: pyroscope
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app.kubernetes.io/name: opentelemetry-collector-collector

## gatewayの設定
gateway:
  lb:
    minReplicas: 3
    maxReplicas: 3
    resources:
      requests:
        cpu: 150m
        memory: 150Mi
    hpa:
      enabled: false
    ingress:
      # Kubernetesのingressを利用する
      enabled: true
      # ingressのホスト
      host: localhost
    service:
      # k3dでingressを利用するための設定
      annotations:
        traefik.ingress.kubernetes.io/service.serversscheme: h2c

## vald-agentの設定
agent:
  minReplicas: 6
  maxReplicas: 6
  ## Production環境では推奨しないが、今回はParallelで行う
  podManagementPolicy: Parallel
  resources:
    requests:
      cpu: 150m
      memory: 150Mi
  ngt:
    # 次元数
    dimension: 784
    # 距離関数
    distance_type: l2
    # ベクトルのオブジェクトタイプ
    object_type: float
    # 自動Indexを行うためのチェック周期(Index Mangerを利用するためマイナスにして無効化)
    auto_index_check_duration_limit: "-1m"
    # 自動Indexの周期(Index Mangerを利用するためマイナスにして無効化)
    auto_index_duration_limit: "-20s"
    # 自動インデックス作成操作のバッチプロセスプールサイズ
    auto_create_index_pool_size: 100
    # インデックス構築時のデフォルトバッチサイズ
    default_pool_size: 100
    
## vald-discovererの設定
discoverer:
  resources:
    requests:
      cpu: 150m
      memory: 50Mi
      
## vald-managerの設定
manager:
  index:
    resources:
      requests:
        cpu: 150m
        memory: 30Mi
    indexer:
      # Index Managerを有効化
      enable: true
      # 自動インデックス作成の制限期間
      # これにより、各Vald Agentで強制インデックス作成がトリガーされる
      auto_index_duration_limit: 1m
      # 自動インデックス作成のチェック期間
      # これにより、コミットされていないインデックスが制限を超えた場合、各Vald Agnetでのインデックス作成がトリガーされる
      auto_index_check_duration: 40s