mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-03-20 06:11:27 -07:00
86 lines
2.0 KiB
Markdown
86 lines
2.0 KiB
Markdown
# AI Search Patterns
|
|
|
|
## search() vs aiSearch()
|
|
|
|
| Use | Method | Returns |
|
|
|-----|--------|---------|
|
|
| Custom UI, analytics | `search()` | Raw chunks only (~100-300ms) |
|
|
| Chatbots, Q&A | `aiSearch()` | AI response + chunks (~500-2000ms) |
|
|
|
|
## rewrite_query
|
|
|
|
| Setting | Use When |
|
|
|---------|----------|
|
|
| `true` | User input (typos, vague queries) |
|
|
| `false` | LLM-generated queries (already optimized) |
|
|
|
|
## Multitenancy (Folder-Based)
|
|
|
|
```typescript
|
|
const answer = await env.AI.autorag("saas-docs").aiSearch({
|
|
query: "refund policy",
|
|
model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
|
|
filters: {
|
|
column: "folder",
|
|
operator: "gte", // "starts with" pattern
|
|
value: `tenants/${tenantId}/`
|
|
}
|
|
});
|
|
```
|
|
|
|
## Streaming
|
|
|
|
```typescript
|
|
const stream = await env.AI.autorag("docs").aiSearch({
|
|
query, model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", stream: true
|
|
});
|
|
return new Response(stream, { headers: { "Content-Type": "text/event-stream" } });
|
|
```
|
|
|
|
## Score Threshold
|
|
|
|
| Threshold | Use |
|
|
|-----------|-----|
|
|
| 0.3 (default) | Broad recall, exploratory |
|
|
| 0.5 | Balanced, production default |
|
|
| 0.7 | High precision, critical accuracy |
|
|
|
|
## System Prompt Template
|
|
|
|
```typescript
|
|
const systemPrompt = `You are a documentation assistant.
|
|
- Answer ONLY based on provided context
|
|
- If context doesn't contain answer, say "I don't have information"
|
|
- Include code examples from context`;
|
|
```
|
|
|
|
## Compound Filters
|
|
|
|
```typescript
|
|
// OR: Multiple folders
|
|
filters: {
|
|
operator: "or",
|
|
filters: [
|
|
{ column: "folder", operator: "gte", value: "docs/api/" },
|
|
{ column: "folder", operator: "gte", value: "docs/auth/" }
|
|
]
|
|
}
|
|
|
|
// AND: Folder + date
|
|
filters: {
|
|
operator: "and",
|
|
filters: [
|
|
{ column: "folder", operator: "gte", value: "docs/" },
|
|
{ column: "timestamp", operator: "gte", value: oneWeekAgoSeconds }
|
|
]
|
|
}
|
|
```
|
|
|
|
## Reranking
|
|
|
|
Enable for high-stakes use cases (adds ~300ms latency):
|
|
|
|
```typescript
|
|
reranking: { enabled: true, model: "@cf/baai/bge-reranker-base" }
|
|
```
|