refactor(api): TOML 配置 SSOT、统一错误契约、Auth/事务加固与可观测性 (#33)

配置 SSOT(TOML + .env)
统一错误契约
Auth 与事务边界
Redis / Celery 可靠性:业务 Redis(DB/0)与 Celery broker/backend(DB/1)显式拆分;连接池、sync client
可观测性(OpenTelemetry + LGTM)
This commit is contained in:
Sully
2026-05-22 13:44:50 +08:00
committed by GitHub
parent f09ae248f9
commit 53e0065e3e
298 changed files with 15247 additions and 4344 deletions

View File

@@ -0,0 +1,52 @@
---
title: Use Hybrid Search for Better Results
impact: MEDIUM
impactDescription: Combining vector + filters improves relevance and reduces search space
tags: vector, hybrid, filters, redisvl, search
description: Use Hybrid Search for Better Results
alwaysApply: true
---
## Use Hybrid Search for Better Results
Combine vector similarity with attribute filtering for more relevant results. In this rule, "hybrid" means filtered vector search. Redis and RedisVL also use "hybrid search" for text + vector fusion via `FT.HYBRID` / `HybridQuery`.
**Correct:** Apply filters to reduce search space.
```python
from redisvl.query import VectorQuery
from redisvl.query.filter import Num, Tag
filters = (Tag("category") == "technology") & (Num("date") >= 2024) & (Num("date") <= 2025)
query = VectorQuery(
vector=query_embedding,
vector_field_name="embedding",
return_fields=["content", "category", "date"],
num_results=10,
filter_expression=filters
)
results = index.query(query)
```
**Incorrect:** Searching entire vector space when filters apply.
```python
# Bad: No filter - searches all vectors then filters client-side
results = index.query(VectorQuery(
vector=query_embedding,
vector_field_name="embedding",
num_results=1000
))
# Client-side filtering - wasteful
filtered = [r for r in results if r["category"] == "technology"]
```
**Tips:**
- Use TAG fields for category filters
- Use NUMERIC fields for date/price ranges
- Redis auto-selects the filtered vector execution strategy; tune `hybrid_policy` only when needed
- For true text + vector fusion, use `HybridQuery` on Redis >= 8.4.0 with redis-py >= 7.1.0; use `AggregateHybridQuery` on earlier Redis versions
Reference: [Redis Vector Search](https://redis.io/docs/latest/develop/ai/search-and-query/vectors/)