From ac0fc6f01bba9cdabb9de4569f3c8bec9736bb18 Mon Sep 17 00:00:00 2001 From: CinematicDev <victoranyirah@gmail.com> Date: Fri, 19 Jan 2024 10:23:53 -0800 Subject: [PATCH] Update supabase vecs metadata filter function to support multiple fields (#10133) * Update vectors to filter to use updated vecs query language for multi-field query searches * Initial commit * cr --------- Co-authored-by: Haotian Zhang <socool.king@gmail.com> --- llama_index/vector_stores/supabase.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/llama_index/vector_stores/supabase.py b/llama_index/vector_stores/supabase.py index 24ccf369e6..340c14b553 100644 --- a/llama_index/vector_stores/supabase.py +++ b/llama_index/vector_stores/supabase.py @@ -1,5 +1,6 @@ import logging import math +from collections import defaultdict from typing import Any, List from llama_index.constants import DEFAULT_EMBEDDING_DIM @@ -74,9 +75,13 @@ class SupabaseVectorStore(VectorStore): def _to_vecs_filters(self, filters: MetadataFilters) -> Any: """Convert llama filters to vecs filters. $eq is the only supported operator.""" - vecs_filter = {} + vecs_filter = defaultdict(list) + filter_cond = f"${filters.condition}" + for f in filters.legacy_filters(): - vecs_filter[f.key] = {"$eq": f.value} + sub_filter = {} + sub_filter[f.key] = {"$eq": f.value} + vecs_filter[filter_cond].append(sub_filter) return vecs_filter def add(self, nodes: List[BaseNode], **add_kwargs: Any) -> List[str]: -- GitLab