Merge remote-tracking branch 'origin/feat/v3-pipeline' into feat/v3-pipeline
# Conflicts: # mem0-ts/src/oss/src/utils/factory.ts # mem0/vector_stores/milvus.py # mem0/vector_stores/qdrant.py
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import { OpenAIEmbedder } from "../embeddings/openai";
|
||||
import { OllamaEmbedder } from "../embeddings/ollama";
|
||||
import { LMStudioEmbedder } from "../embeddings/lmstudio";
|
||||
import { OpenAILLM } from "../llms/openai";
|
||||
import { OpenAIStructuredLLM } from "../llms/openai_structured";
|
||||
import { AnthropicLLM } from "../llms/anthropic";
|
||||
@@ -20,7 +19,6 @@ import { Qdrant } from "../vector_stores/qdrant";
|
||||
import { VectorizeDB } from "../vector_stores/vectorize";
|
||||
import { RedisDB } from "../vector_stores/redis";
|
||||
import { OllamaLLM } from "../llms/ollama";
|
||||
import { LMStudioLLM } from "../llms/lmstudio";
|
||||
import { SupabaseDB } from "../vector_stores/supabase";
|
||||
import { SQLiteManager } from "../storage/SQLiteManager";
|
||||
import { MemoryHistoryManager } from "../storage/MemoryHistoryManager";
|
||||
@@ -35,7 +33,6 @@ import { LangchainEmbedder } from "../embeddings/langchain";
|
||||
import { LangchainVectorStore } from "../vector_stores/langchain";
|
||||
import { AzureAISearch } from "../vector_stores/azure_ai_search";
|
||||
import { PGVector } from "../vector_stores/pgvector";
|
||||
import { DeepSeekLLM } from "../llms/deepseek";
|
||||
|
||||
export class EmbedderFactory {
|
||||
static create(provider: string, config: EmbeddingConfig): Embedder {
|
||||
@@ -44,8 +41,6 @@ export class EmbedderFactory {
|
||||
return new OpenAIEmbedder(config);
|
||||
case "ollama":
|
||||
return new OllamaEmbedder(config);
|
||||
case "lmstudio":
|
||||
return new LMStudioEmbedder(config);
|
||||
case "google":
|
||||
case "gemini":
|
||||
return new GoogleEmbedder(config);
|
||||
@@ -72,8 +67,6 @@ export class LLMFactory {
|
||||
return new GroqLLM(config);
|
||||
case "ollama":
|
||||
return new OllamaLLM(config);
|
||||
case "lmstudio":
|
||||
return new LMStudioLLM(config);
|
||||
case "google":
|
||||
case "gemini":
|
||||
return new GoogleLLM(config);
|
||||
@@ -83,8 +76,6 @@ export class LLMFactory {
|
||||
return new MistralLLM(config);
|
||||
case "langchain":
|
||||
return new LangchainLLM(config);
|
||||
case "deepseek":
|
||||
return new DeepSeekLLM(config);
|
||||
default:
|
||||
throw new Error(`Unsupported LLM provider: ${provider}`);
|
||||
}
|
||||
|
||||
+16
-2
@@ -995,6 +995,13 @@ class Memory(MemoryBase):
|
||||
# Apply enhanced metadata filtering if advanced operators are detected
|
||||
if filters and self._has_advanced_operators(filters):
|
||||
processed_filters = self._process_metadata_filters(filters)
|
||||
# Remove original logical/operator keys that _build_filters_and_metadata
|
||||
# copied verbatim from input_filters — they have now been reprocessed.
|
||||
for logical_key in ("AND", "OR", "NOT"):
|
||||
effective_filters.pop(logical_key, None)
|
||||
for fk in list(filters.keys()):
|
||||
if fk not in ("AND", "OR", "NOT") and fk in effective_filters and isinstance(filters[fk], dict):
|
||||
effective_filters.pop(fk, None)
|
||||
effective_filters.update(processed_filters)
|
||||
elif filters:
|
||||
# Simple filters, merge directly
|
||||
@@ -1235,7 +1242,7 @@ class Memory(MemoryBase):
|
||||
|
||||
additional_metadata = {k: v for k, v in payload.items() if k not in core_and_promoted_keys}
|
||||
if additional_metadata:
|
||||
if "metadata" not in memory_item_dict:
|
||||
if not memory_item_dict.get("metadata"):
|
||||
memory_item_dict["metadata"] = {}
|
||||
memory_item_dict["metadata"].update(additional_metadata)
|
||||
|
||||
@@ -2332,6 +2339,13 @@ class AsyncMemory(MemoryBase):
|
||||
# Apply enhanced metadata filtering if advanced operators are detected
|
||||
if filters and self._has_advanced_operators(filters):
|
||||
processed_filters = self._process_metadata_filters(filters)
|
||||
# Remove original logical/operator keys that _build_filters_and_metadata
|
||||
# copied verbatim from input_filters — they have now been reprocessed.
|
||||
for logical_key in ("AND", "OR", "NOT"):
|
||||
effective_filters.pop(logical_key, None)
|
||||
for fk in list(filters.keys()):
|
||||
if fk not in ("AND", "OR", "NOT") and fk in effective_filters and isinstance(filters[fk], dict):
|
||||
effective_filters.pop(fk, None)
|
||||
effective_filters.update(processed_filters)
|
||||
elif filters:
|
||||
# Simple filters, merge directly
|
||||
@@ -2572,7 +2586,7 @@ class AsyncMemory(MemoryBase):
|
||||
|
||||
additional_metadata = {k: v for k, v in payload.items() if k not in core_and_promoted_keys}
|
||||
if additional_metadata:
|
||||
if "metadata" not in memory_item_dict:
|
||||
if not memory_item_dict.get("metadata"):
|
||||
memory_item_dict["metadata"] = {}
|
||||
memory_item_dict["metadata"].update(additional_metadata)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user