Production-ready Python 3.11 + FastAPI structure with Redis, PostgreSQL and FAISS integration
Handles all Gemini API interactions:
Manages vector operations:
Session state management:
Ticket persistence:
@router.websocket("/chat/stream")
async def websocket_chat(websocket: WebSocket):
await websocket.accept()
session_id = str(uuid.uuid4())
try:
while True:
data = await websocket.receive_json()
if data["type"] == "user_message":
# Generate stream from Gemini with RAG context
async for chunk in gemini_service.stream_response(
message=data["content"],
session_id=session_id
):
await websocket.send_json({
"type": "assistant_chunk",
"chunk": chunk
})
await websocket.send_json({
"type": "assistant_done",
"content": "Stream complete"
})
except WebSocketDisconnect:
await redis_service.clear_session(session_id)
async def create_index_from_documents(docs: List[str]):
# Generate embeddings using Gemini
embeddings = await gemini_service.generate_embeddings(docs)
# Convert to numpy array
vectors = np.array(embeddings).astype('float32')
# Create FAISS index
dimension = vectors.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(vectors)
# Save index to disk
faiss.write_index(index, "faiss_index.index")
# Store document metadata in Redis
await redis_service.store_documents(
[{"id": str(uuid.uuid4()), "text": doc} for doc in docs]
)
This architecture is optimized for high-performance AI support with minimal latency.