This reverts commitabeadc49c8. Restores vendor/litellm-pgvector/ and the vector_store_registry wiring (in-band file_search tool-call support) at the user's request, after re-confirming against docs.litellm.ai/docs/completion/knowledgebase and litellm-pgvector's own README that pg_vector is still not an in-process vector_store_registry backend -- it requires this same standalone connector service either way, so there is no simpler 'native' path that was missed. Trading back in: 793 lines of vendored code, the untested Prisma migration, and the git-context build risk noted in VENDORED.md (all flagged as unverified against real hardware in issue #24), in exchange for the file_search in-band tool call memory-retrieval did not support. Conflicts resolved on top of later commits (Redis, update.sh key-minting fold-in): - .env.example / docs/memory-knowledgebase.md: kept the auto-mint-via- update.sh language, renamed MEMORY_RETRIEVAL_* back to LITELLM_PGVECTOR_*. - scripts/generate-secrets.sh: left deleted -- its job was folded into update.sh in24d749b, unrelated to this revert. - scripts/update.sh: renamed the MEMORY_RETRIEVAL_* secret/mint calls to LITELLM_PGVECTOR_* to match. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018WHfjWrSEcGhCoeu6dQfDa
51 lines
2.1 KiB
Bash
51 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Loads data/memory.md and data/claude-legacy-memory.md into the LiteLLM
|
|
# knowledgebase (the "memory-and-notes" vector store, see litellm-config.yaml)
|
|
# via litellm-pgvector's batch-embeddings endpoint.
|
|
#
|
|
# ponytail: one chunk per non-empty, non-heading line — both source files are
|
|
# already one fact/paragraph per line (no hard-wrapping), so this needs no
|
|
# real chunking logic. Re-run after editing either file; there's no dedup, so
|
|
# this appends duplicates on a second run against unchanged content — clear
|
|
# the store first (DELETE the vector_store_id's rows) if you need a clean
|
|
# reload.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
[ -f .env ] && set -a && . ./.env && set +a
|
|
|
|
: "${LITELLM_PGVECTOR_API_KEY:?Set LITELLM_PGVECTOR_API_KEY in .env first}"
|
|
LITELLM_PGVECTOR_URL="${LITELLM_PGVECTOR_URL:-http://localhost:8000}"
|
|
VECTOR_STORE_ID="memory-and-notes"
|
|
|
|
# Must match litellm-config.yaml's vector_store_registry entry — the
|
|
# registry just points at a store the backend must already know about.
|
|
# Ignores failure if it already exists (no documented idempotency check).
|
|
curl -sf -X POST "${LITELLM_PGVECTOR_URL}/v1/vector_stores" \
|
|
-H "Authorization: Bearer ${LITELLM_PGVECTOR_API_KEY}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"name\": \"${VECTOR_STORE_ID}\"}" > /dev/null 2>&1 || true
|
|
|
|
ingest_file() {
|
|
local file="$1" section=""
|
|
local batch="[]"
|
|
while IFS= read -r line; do
|
|
case "$line" in
|
|
"#"*) section="${line#\# }"; section="${section#\#\# }"; continue ;;
|
|
""|"---") continue ;;
|
|
esac
|
|
batch=$(jq --arg content "$line" --arg source "$file" --arg section "$section" \
|
|
'. += [{"content": $content, "metadata": {"source": $source, "section": $section}}]' <<<"$batch")
|
|
done < "$file"
|
|
|
|
echo "Ingesting $(jq 'length' <<<"$batch") chunks from $file..."
|
|
curl -sf -X POST "${LITELLM_PGVECTOR_URL}/v1/vector_stores/${VECTOR_STORE_ID}/embeddings/batch" \
|
|
-H "Authorization: Bearer ${LITELLM_PGVECTOR_API_KEY}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$batch" > /dev/null
|
|
}
|
|
|
|
ingest_file data/memory.md
|
|
ingest_file data/claude-legacy-memory.md
|
|
echo "Done."
|