- Python
- TypeScript
- Rust
get 和 query 方法中的 where_document 参数用于根据文档内容过滤记录。我们支持使用 $contains 和 $not_contains 操作符进行全文搜索。我们还支持使用 $regex 和 $not_regex 操作符进行 正则表达式 模式匹配。例如,这里我们获取所有文档包含特定搜索字符串的记录:报告代码错误
复制
咨询 AI
collection.get(
where_document={"$contains": "search string"}
)
报告代码错误
复制
咨询 AI
collection.get(
where_document={
"$regex": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
}
)
使用逻辑操作符
您还可以使用逻辑操作符$and 和 $or 来组合多个过滤器。$and 操作符将返回匹配列表中所有过滤器的结果:报告代码错误
复制
咨询 AI
collection.query(
query_texts=["query1", "query2"],
where_document={
"$and": [
{"$contains": "search_string_1"},
{"$regex": "[a-z]+"},
]
}
)
$or 操作符将返回匹配列表中任意一个过滤器的结果报告代码错误
复制
咨询 AI
collection.query(
query_texts=["query1", "query2"],
where_document={
"$or": [
{"$contains": "search_string_1"},
{"$not_contains": "search_string_2"},
]
}
)
与元数据过滤结合使用
.get 和 .query 可以处理结合了 元数据过滤 的 where_document 搜索报告代码错误
复制
咨询 AI
collection.query(
query_texts=["doc10", "thus spake zarathustra", ...],
n_results=10,
where={"metadata_field": "is_equal_to_this"},
where_document={"$contains":"search_string"}
)
get 和 query 方法中的 whereDocument 参数用于根据文档内容过滤记录。我们支持使用 $contains 和 $not_contains 操作符进行全文搜索。我们还支持使用 $regex 和 $not_regex 操作符进行 正则表达式 模式匹配。例如,这里我们获取所有文档包含特定搜索字符串的记录:报告代码错误
复制
咨询 AI
await collection.get({
whereDocument: { $contains: "search string" },
});
报告代码错误
复制
咨询 AI
await collection.get({
whereDocument: {
$regex: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
},
});
使用逻辑操作符
您还可以使用逻辑操作符$and 和 $or 来组合多个过滤器。$and 操作符将返回匹配列表中所有过滤器的结果:报告代码错误
复制
咨询 AI
await collection.query({
queryTexts: ["query1", "query2"],
whereDocument: {
$and: [{ $contains: "search_string_1" }, { $regex: "[a-z]+" }],
},
});
$or 操作符将返回匹配列表中任意一个过滤器的结果报告代码错误
复制
咨询 AI
await collection.query({
queryTexts: ["query1", "query2"],
whereDocument: {
$or: [
{ $contains: "search_string_1" },
{ $not_contains: "search_string_2" },
],
},
});
与元数据过滤结合使用
.get 和 .query 可以处理结合了 元数据过滤 的 whereDocument 搜索报告代码错误
复制
咨询 AI
await collection.query({
queryTexts: ["doc10", "thus spake zarathustra", ...],
nResults: 10,
where: { metadata_field: "is_equal_to_this" },
whereDocument: { "$contains": "search_string" }
})
get 和 query 中的 r#where 参数用于根据文档内容过滤记录。我们支持使用 Contains 和 NotContains 操作符进行全文搜索。我们还支持使用 Regex 和 NotRegex 操作符进行正则表达式模式匹配。例如,这里我们获取所有文档包含特定搜索字符串的记录:报告代码错误
复制
咨询 AI
use chroma::types::{DocumentExpression, DocumentOperator, Where};
let where_clause = Where::Document(DocumentExpression {
operator: DocumentOperator::Contains,
pattern: "search string".to_string(),
});
let results = collection
.get(None, Some(where_clause), None, None, None)
.await?;
报告代码错误
复制
咨询 AI
let where_clause = Where::Document(DocumentExpression {
operator: DocumentOperator::Regex,
pattern: r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$".to_string(),
});
let results = collection
.get(None, Some(where_clause), None, None, None)
.await?;
使用逻辑操作符
您还可以使用CompositeExpression 逻辑操作符来组合多个过滤器。And 操作符将返回匹配列表中所有过滤器的结果:报告代码错误
复制
咨询 AI
use chroma::types::{
BooleanOperator, CompositeExpression, DocumentExpression, DocumentOperator, Where,
};
let where_clause = Where::Composite(CompositeExpression {
operator: BooleanOperator::And,
children: vec![
Where::Document(DocumentExpression {
operator: DocumentOperator::Contains,
pattern: "search_string_1".to_string(),
}),
Where::Document(DocumentExpression {
operator: DocumentOperator::Regex,
pattern: "[a-z]+".to_string(),
}),
],
});
let results = collection
.query(vec![vec![0.1, 0.2, 0.3]], Some(10), Some(where_clause), None, None)
.await?;
Or 操作符将返回匹配列表中任意一个过滤器的结果报告代码错误
复制
咨询 AI
let where_clause = Where::Composite(CompositeExpression {
operator: BooleanOperator::Or,
children: vec![
Where::Document(DocumentExpression {
operator: DocumentOperator::Contains,
pattern: "search_string_1".to_string(),
}),
Where::Document(DocumentExpression {
operator: DocumentOperator::NotContains,
pattern: "search_string_2".to_string(),
}),
],
});
let results = collection
.query(vec![vec![0.1, 0.2, 0.3]], Some(10), Some(where_clause), None, None)
.await?;
与元数据过滤结合使用
get 和 query 可以使用复合 where 子句处理结合了 元数据过滤 的文档搜索报告代码错误
复制
咨询 AI
use chroma::types::{
BooleanOperator, CompositeExpression, DocumentExpression, DocumentOperator,
MetadataComparison, MetadataExpression, MetadataValue, PrimitiveOperator, Where,
};
let where_clause = Where::Composite(CompositeExpression {
operator: BooleanOperator::And,
children: vec![
Where::Metadata(MetadataExpression {
key: "metadata_field".to_string(),
comparison: MetadataComparison::Primitive(
PrimitiveOperator::Equal,
MetadataValue::Str("is_equal_to_this".to_string()),
),
}),
Where::Document(DocumentExpression {
operator: DocumentOperator::Contains,
pattern: "search_string".to_string(),
}),
],
});
let results = collection
.query(vec![vec![0.1, 0.2, 0.3]], Some(10), Some(where_clause), None, None)
.await?;