diff --git a/.env.example b/.env.example index db110b4..9bd4a4d 100644 --- a/.env.example +++ b/.env.example @@ -15,3 +15,7 @@ AI_SERVICE_LLM_MODEL=gpt-4o-mini # Ollama Configuration (for embedding model) AI_SERVICE_OLLAMA_BASE_URL=http://ollama:11434 AI_SERVICE_OLLAMA_EMBEDDING_MODEL=nomic-embed-text + +# Frontend API Key (required for admin panel authentication) +# Get this key from the backend logs after first startup, or from /admin/api-keys +VITE_APP_API_KEY=your-frontend-api-key-here diff --git a/ai-service-admin/Dockerfile b/ai-service-admin/Dockerfile index fdaa9c0..bee8070 100644 --- a/ai-service-admin/Dockerfile +++ b/ai-service-admin/Dockerfile @@ -3,6 +3,12 @@ FROM docker.1ms.run/node:20-alpine AS builder WORKDIR /app +ARG VITE_APP_API_KEY +ARG VITE_APP_BASE_API=/api + +ENV VITE_APP_API_KEY=$VITE_APP_API_KEY +ENV VITE_APP_BASE_API=$VITE_APP_BASE_API + COPY package*.json ./ RUN npm install && npm install @rollup/rollup-linux-x64-musl --save-optional diff --git a/ai-service/app/services/retrieval/optimized_retriever.py b/ai-service/app/services/retrieval/optimized_retriever.py index 1c773d8..74d6a21 100644 --- a/ai-service/app/services/retrieval/optimized_retriever.py +++ b/ai-service/app/services/retrieval/optimized_retriever.py @@ -396,42 +396,32 @@ class OptimizedRetriever(BaseRetriever): ) -> list[dict[str, Any]]: """Search using specified vector dimension.""" try: - qdrant = await client.get_client() - collection_name = client.get_collection_name(tenant_id) - logger.info( - f"[RAG-OPT] Searching collection={collection_name}, " - f"vector_name={vector_name}, limit={limit}, vector_dim={len(query_vector)}" + f"[RAG-OPT] Searching with vector_name={vector_name}, " + f"limit={limit}, vector_dim={len(query_vector)}" ) - results = await qdrant.search( - collection_name=collection_name, - query_vector=(vector_name, query_vector), + results = await client.search( + tenant_id=tenant_id, + query_vector=query_vector, limit=limit, + vector_name=vector_name, ) logger.info( - f"[RAG-OPT] Search returned {len(results)} results from collection={collection_name}" + f"[RAG-OPT] Search returned {len(results)} results" ) if len(results) > 0: for i, r in enumerate(results[:3]): logger.debug( - f"[RAG-OPT] Result {i+1}: id={r.id}, score={r.score:.4f}" + f"[RAG-OPT] Result {i+1}: id={r['id']}, score={r['score']:.4f}" ) - return [ - { - "id": str(result.id), - "score": result.score, - "payload": result.payload or {}, - } - for result in results - ] + return results except Exception as e: logger.error( - f"[RAG-OPT] Search with {vector_name} failed: {e}, " - f"collection_name={client.get_collection_name(tenant_id)}", + f"[RAG-OPT] Search with {vector_name} failed: {e}", exc_info=True ) return [] diff --git a/docker-compose.yaml b/docker-compose.yaml index 9820697..760d5b2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -35,6 +35,9 @@ services: build: context: ./ai-service-admin dockerfile: Dockerfile + args: + VITE_APP_API_KEY: ${VITE_APP_API_KEY:-} + VITE_APP_BASE_API: /api container_name: ai-service-admin restart: unless-stopped ports: