前面分别介绍了 get 和 query 方法,那么,在实际使用中该如何正确选择呢?
下面通过几个简单需求和答案来简单分析:
| 需求 | 使用 |
| 按 id 取原数据 | get(ids=...) |
| 按某个字段筛出一批 | get(where=...) |
| 导出全量 | get 分页 |
| 找相似内容 | query |
| 搜关键词 | query + where_document或纯get(where_document=...) |
| 按语义查询数据 | query |
还有一点需要注意,使用 query 一定要有向量输入,而 get 不需要。如果你只是想“找包含'退款'两个字的文档”,用 get(where_document={"$contains": "退款"}) 就够了,不用 query,和 SQL 中的 like 一样。
简单总结,在什么情况下才使用 query,如果你想通过语义进行查询时才使用 query(语义查询需要计算向量,实际是向量距离的比较,由 Chroma 完成比较动作)。其他情况,均使用 get 进行查询。