# 5. Code Snippet Thực Tế (Vector Query)

Đoạn code SQL thực tế từ `ProductSearchEngine._fallback_cascade` được hệ thống gọi khi dùng Vector Search (tìm kiếm xấp xỉ):

```python
# B1: Gọi OpenAI để lấy Vector Embedding của chuỗi tìm kiếm text (raw_text)
query_vector = await create_embedding_async(lit.raw_text.strip())
v_str = "[" + ",".join(str(v) for v in query_vector) + "]"

# B2: Cấu trúc SQL Query với approx_cosine_similarity và Hint ef_search
sql_vec = f"""
WITH vector_matches AS (
    SELECT /*+ SET_VAR(ann_params='{{"ef_search":256}}') */
        internal_ref_code, product_name, price, 
        approx_cosine_similarity(vector, {v_str}) as similarity_score
    FROM test_db.magento_product_dimension_with_text_embedding
    ORDER BY similarity_score DESC
    LIMIT 200
)
SELECT * FROM vector_matches
WHERE 1=1
ORDER BY similarity_score DESC, quantity_sold DESC
LIMIT 150
"""

# B3: Thực thi truy vấn qua StarRocks
vec_products = await db.execute_query_async(sql_vec)
```

Điểm chú ý: Câu lệnh dùng `ORDER BY similarity_score DESC` bên trong CTE `vector_matches` là để giới hạn nhanh 200 sản phẩm gần nhất (HNSW index hỗ trợ rất tốt), sau đó ra ngoài CTE mới apply thêm các Filter cứng (Ví dụ filter loại trừ) hoặc sort theo `quantity_sold`.