File size: 3,501 Bytes
6f31655
 
 
 
 
 
 
 
 
f5b0cd7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
---
title: Humanoids
emoji: 🐨
colorFrom: gray
colorTo: purple
sdk: docker
pinned: false
---

# SpecKit-Plus Backend (Humanoids)

This is the AI-powered backend for the **Physical AI & Humanoid Robotics** interactive textbook. It provides Retrieval-Augmented Generation (RAG) capabilities, allowing students to query textbook content and get context-aware explanations.

## Directory Structure

```
backend/
β”œβ”€β”€ main.py                 # Main FastAPI application entry point
β”œβ”€β”€ configs/
β”‚   └── config.py          # Configuration and model settings
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ rag.py            # RAG (Retrieval Augmented Generation) service
β”‚   β”œβ”€β”€ indexer.py        # Document indexing for Qdrant vector database
β”‚   └── chatkit_service.py # ChatKit server with RAG capabilities
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ vector_store.py   # Qdrant vector database operations
β”‚   └── embeddings.py     # Embedding service using FastEmbed
β”œβ”€β”€ simple_agents/
β”‚   └── aagents.py        # Triage Agent definition
β”œβ”€β”€ agents/
β”‚   └── Runner.py         # Agent runner
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ test_keys.py      # Configuration tests
β”‚   └── test_rag.py       # RAG functionality tests
└── history/              # History of prompts and decisions
    β”œβ”€β”€ prompts/          # Prompt History Records (PHRs)
    └── adr/             # Architecture Decision Records (ADRs)
```

## What Has Been Done

### 1. Code Organization & Structure
- Organized backend files into logical directories (configs, services, data, simple_agents, agents, tests)
- Fixed import paths across all files to work with new directory structure
- Centralized model configuration in `configs/config.py`

### 2. Qdrant Integration & RAG System
- Implemented document indexing system in `services/indexer.py` to upload documents from `frontend/docs` to Qdrant
- Fixed Qdrant ID validation issues by changing from file paths to UUIDs
- Created RAG service in `services/rag.py` for contextual query processing
- Connected the main Agent in `main.py` to use Qdrant context before responding
- Updated default collection name to "Humanoids" across all components

### 3. Agent Integration
- Connected the Triage Agent to use RAG context from Qdrant for more informed responses
- Updated API endpoints (`/api/query` and `/api/selection`) to incorporate RAG context

### 4. Configuration & Security
- Centralized configuration management with proper environment variable handling
- Fixed undefined variable issues in services

## What Is Left

### 1. Testing & Verification
- [ ] Test complete RAG flow to verify Agent uses Qdrant context properly
- [ ] Verify responses include context from uploaded documents
- [ ] Confirm sources field is populated with document references

### 2. Documentation & History
- [ ] Create PHR for RAG integration work
- [ ] Finalize commit with all changes

## API Endpoints

- `GET /` - Health check endpoint
- `POST /api/query` - General chat queries with RAG context
- `POST /api/selection` - Queries based on selected text with RAG context

## Setup

1. Install dependencies: `uv pip install -r requirements.txt`
2. Set up environment variables in `.env`:
   ```
   QDRANT_URL=your_qdrant_url
   QDRANT_API_KEY=your_qdrant_api_key
   EXTERNAL_API_KEY=your_external_api_key
   ```
3. Index documents: `python services/indexer.py`
4. Start server: `uv run --no-dev uvicorn main:app --reload --port=8000`