◦ SQLAlchemyをベースに拡張されている ◦ メソッドチェーンで、動的に可読性高く検索できる ◦ Auto-Embedding, Reranking, Hybrid Searchなど便利な機能がサポートされている SELECT id, document, vec_cosine_distance(embedding, '[1,2,3]') AS distance FROM embedded_documents ORDER BY distance LIMIT 3; +----+----------+---------------------+
| id | document | distance |
+----+----------+---------------------+
| 2 | fish | 0.00853986601633272 |
| 1 | dog | 0.12712843905603044 |
| 3 | tree | 0.7327387580875756 |
+----+----------+---------------------+
3 rows in set (0.15 sec)
table = db.open_table("embedded_documents") table.search([1, 2, 3]).vector_column("embedding").distance_metric("COSINE").limit(3).to_list() [
{'id': 2, 'document': 'fish', 'embedding': array([1., 2., 4.], dtype=float32), '_distance': 0.00853986601633272, '_score': 0.9914601339836673},
{'id': 1, 'document': 'dog', 'embedding': array([1., 2., 1.], dtype=float32), '_distance': 0.12712843905603044, '_score': 0.8728715609439696},
{'id': 3, 'document': 'tree', 'embedding': array([1., 0., 0.], dtype=float32), '_distance': 0.7327387580875756, '_score': 0.2672612419124244}
]
10