reranker_backend_env.sh 1.74 KB
#!/bin/bash
#
# Shared helpers for mapping reranker backends to isolated virtualenvs.
#

set -euo pipefail

detect_rerank_backend() {
  local project_root="$1"
  local backend="${RERANK_BACKEND:-}"

  if [[ -n "${backend}" ]]; then
    printf '%s\n' "${backend}"
    return 0
  fi

  backend="$(
    awk '
      /^  rerank:$/ { in_rerank=1; next }
      in_rerank && /^  [^ ]/ { in_rerank=0 }
      in_rerank && /^    backend:/ {
        gsub(/"/, "", $2)
        print $2
        exit
      }
    ' "${project_root}/config/config.yaml"
  )"

  if [[ -z "${backend}" ]]; then
    backend="qwen3_vllm"
  fi

  printf '%s\n' "${backend}"
}

reranker_backend_venv_dir() {
  local project_root="$1"
  local backend="$2"

  case "${backend}" in
    qwen3_vllm) printf '%s/.venv-reranker\n' "${project_root}" ;;
    qwen3_gguf) printf '%s/.venv-reranker-gguf\n' "${project_root}" ;;
    qwen3_transformers) printf '%s/.venv-reranker-transformers\n' "${project_root}" ;;
    bge) printf '%s/.venv-reranker-bge\n' "${project_root}" ;;
    dashscope_rerank) printf '%s/.venv-reranker-dashscope\n' "${project_root}" ;;
    *) printf '%s/.venv-reranker-%s\n' "${project_root}" "${backend}" ;;
  esac
}

reranker_backend_requirements_file() {
  local project_root="$1"
  local backend="$2"

  case "${backend}" in
    qwen3_vllm) printf '%s/requirements_reranker_qwen3_vllm.txt\n' "${project_root}" ;;
    qwen3_gguf) printf '%s/requirements_reranker_qwen3_gguf.txt\n' "${project_root}" ;;
    qwen3_transformers) printf '%s/requirements_reranker_qwen3_transformers.txt\n' "${project_root}" ;;
    bge) printf '%s/requirements_reranker_bge.txt\n' "${project_root}" ;;
    dashscope_rerank) printf '%s/requirements_reranker_dashscope.txt\n' "${project_root}" ;;
    *) return 1 ;;
  esac
}