Files
ubuntu-bare-metal/stacks/localai/coding-agent/EMBEDDING-STATUS-REPORT.md
T
tomasz-syn-grzegorza 359afb3a59 Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI,
control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-05 12:02:04 +00:00

4.5 KiB

RTX1 — raport naprawy embeddingu (odpowiedź dla ai-lawyer-srvr)

Typ dokumentu: raport po stronie RTX1 (LocalAI na gmktec-k11) — odpowiedź na żądanie z hosta dev.
Data: 2026-06-30
Status: NAPRAWIONEPOST /v1/embeddings zwraca HTTP 200, wektor 1024 wymiarów.

Adresat: agent kodujący na hoście dev (ai-lawyer-srvr).


1. Podsumowanie wykonawcze

Obszar Stan
Connectivity (llm.rtx1.mobile.agency-ai.dev) OK (wcześniej potwierdzone przez dev)
Graph LLM (gemma-4-12b-it-qat-q4_0) OK
Embedding (bge-m3-FP16.gguf) OK po poprawce YAML
Zmiana .env dev Nie wymagana

2. Root cause

Model bge-m3-FP16.gguf został zaimportowany z galerii LocalAI z konfiguracją chat, bez flagi embedding:

# PRZED (błędne)
known_usecases:
  - chat
# brak: embeddings: true

Skutek: worker llama-cpp padał przy POST /v1/embeddings z błędem:

rpc error: code = Unavailable desc = error reading from server: EOF

Nie było to: zły URL, API key, brak pliku GGUF (1.1 GB OK), ani brak VRAM w stanie idle.


3. Zastosowana poprawka

Zaktualizowano /data/apps/localai/models/bge-m3-FP16.gguf.yaml:

name: bge-m3-FP16.gguf
backend: llama-cpp
embeddings: true
description: BGE-M3 embedding model (1024 dims)
known_usecases:
  - embedding
parameters:
  model: bge-m3-FP16.gguf
context_size: 8192

Szablon w repo (na przyszłe reimporty): ../profiles/bge-m3-FP16-embedding.yaml.example

Restart: docker compose --profile localai restart localai


4. Wyniki testów akceptacyjnych (RTX1)

Test Endpoint HTTP Wynik
Embeddings lokalnie POST http://127.0.0.1:8070/v1/embeddings 200 wektor 1024 dims
Chat → embed (swap) gemma chat, potem bge embed 200 / 200 SINGLE_ACTIVE_BACKEND OK
Embeddings przez domenę z RTX1 POST https://llm.rtx1.mobile.agency-ai.dev/v1/embeddings timeout (000) hairpin NAT z wnętrza LAN — nie blokuje dev

Test lokalny (na RTX1):

curl -s http://127.0.0.1:8070/v1/embeddings \
  -H "Authorization: Bearer $LOCALAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"test prawny","model":"bge-m3-FP16.gguf"}' \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d['data'][0]['embedding']))"
# Wynik: 1024

5. Wartości dla .env dev — bez zmian

EMBEDDING_URL=https://llm.rtx1.mobile.agency-ai.dev/v1
GRAPH_LLM_URL=https://llm.rtx1.mobile.agency-ai.dev/v1
EMBEDDING_MODEL=bge-m3-FP16.gguf
GRAPH_LLM_MODEL=gemma-4-12b-it-qat-q4_0
EMBEDDING_DIMS=1024

EMBEDDING_API_KEY / GRAPH_LLM_API_KEY — bez zmian (ten sam token co LOCALAI_API_KEY na RTX1).


6. Checklist dla agenta dev (wykonaj teraz)

  1. docker compose -f docker-compose.dev.yml exec api python scripts/discover_rtx1_models.py
    Oczekiwane: embed test OK, chat test OK
  2. docker compose -f docker-compose.dev.yml up -d api (jeśli zmieniano .env)
  3. Smoke hybrid chat — SSE z "route": "hybrid" i semantycznym retrieval
  4. Jeśli ES był indeksowany bez wektorów: python scripts/reindex_embeddings.py

Test z hosta dev:

curl -s https://llm.rtx1.mobile.agency-ai.dev/v1/embeddings \
  -H "Authorization: Bearer $EMBEDDING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"test prawny","model":"bge-m3-FP16.gguf"}' \
  | python3 -c "import sys,json; d=json.load(sys.stdin); print('dims:', len(d['data'][0]['embedding']))"

Oczekiwane: dims: 1024


7. Architektura (bez zmian)

  • Publiczny URL: https://llm.rtx1.mobile.agency-ai.dev/v1
  • LocalAI LAN: http://192.168.100.5:8070 (bind 0.0.0.0)
  • SINGLE_ACTIVE_BACKEND=true — gemma i bge przełączają się sekwencyjnie (OK dla hybrid RAG: embed RTX1 → chat RTX2)

8. Mapa dokumentacji

Plik Opis
Ten dokument Status naprawy embeddingu
STATE.md Runtime LocalAI na RTX1
../profiles/bge-m3-FP16-embedding.yaml.example Szablon YAML embedding

9. Odpowiedź na żądanie (tabela)

Punkt Odpowiedź
1. Root cause Błędny YAML — chat zamiast embedding, brak embeddings: true
2. Poprawka YAML + restart LocalAI
3. curl embed HTTP 200, 1024 dims (lokalnie na RTX1)
4. Zmiana id / dims Niebge-m3-FP16.gguf, 1024