Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filtering by user_id in graph memory search results does not work #1805

Open
nibankougen opened this issue Sep 4, 2024 · 4 comments
Open
Assignees
Labels
bug Something isn't working

Comments

@nibankougen
Copy link

🐛 Describe the bug

The vector memory search result (memories) is filtered by user_id, but the graph memory search result (entities) is not filtered by user_id, is this correct behavior? I expected graph memory search results to be filtered by user_id as well as vector memory ones.

For example, I executed the following code using vector memory and graph memory.

from mem0 import Memory
import os

neo4j_username = os.environ.get("NEO4J_USERNAME")
neo4j_password = os.environ.get("NEO4J_PASSWORD")
neo4j_url = os.environ.get("NEO4J_URL")
qdrant_url = os.environ.get("QDRANT_URL")

mem0_config = {
  "vector_store": {
    "provider": "qdrant",
    "config": {
      "collection_name": "knowledge",
      "url": qdrant_url,
    }
  },
  "graph_store": {
    "provider": "neo4j",
    "config": {
      "url": neo4j_url,
      "username": neo4j_username,
      "password": neo4j_password
    }
  },
  "version": "v1.1"
}

m = Memory.from_config(config_dict=mem0_config)

m.add("Charlie likes apples.", user_id="alice")
m.add("Charlie likes baseball.", user_id="bob")

memories_alice = m.search("What dose Charlie like?", user_id="alice")
memories_bob = m.search("What dose Charlie like?", user_id="bob")

print(f"Alice: {memories_alice}\n")
print(f"Bob: {memories_bob}\n")

The execution result is as follows.

Alice: {'memories': [{'id': '308f199f-60c8-451e-a7a3-ae7113d47c06', 'memory': 'Likes apples', 'hash': '7bd8bc77c25090d92299e49beb3ef9cc', 'metadata': None, 'score': 0.25869718, 'created_at': '2024-09-03T21:00:42.388677-07:00', 'updated_at': '2024-09-03T21:03:58.727110-07:00', 'user_id': 'alice'}], 'entities': [{'source': 'charlie', 'relation': 'likes', 'destination': 'apples'}, {'source': 'charlie', 'relation': 'likes', 'destination': 'baseball'}]}

Bob: {'memories': [{'id': '85d68144-cfe6-4e4a-8121-54c0694ce2ab', 'memory': 'Likes baseball', 'hash': 'fdde4363cbbeee916d9c25e63a49e8b9', 'metadata': None, 'score': 0.29662642, 'created_at': '2024-09-03T21:00:37.055906-07:00', 'updated_at': '2024-09-03T21:04:06.556679-07:00', 'user_id': 'bob'}], 'entities': [{'source': 'charlie', 'relation': 'likes', 'destination': 'apples'}, {'source': 'charlie', 'relation': 'likes', 'destination': 'baseball'}]}

Here are the results I expect.

Alice: {'memories': [{'id': '308f199f-60c8-451e-a7a3-ae7113d47c06', 'memory': 'Likes apples', 'hash': '7bd8bc77c25090d92299e49beb3ef9cc', 'metadata': None, 'score': 0.25869718, 'created_at': '2024-09-03T21:00:42.388677-07:00', 'updated_at': '2024-09-03T21:03:58.727110-07:00', 'user_id': 'alice'}], 'entities': [{'source': 'charlie', 'relation': 'likes', 'destination': 'apples'}]}

Bob: {'memories': [{'id': '85d68144-cfe6-4e4a-8121-54c0694ce2ab', 'memory': 'Likes baseball', 'hash': 'fdde4363cbbeee916d9c25e63a49e8b9', 'metadata': None, 'score': 0.29662642, 'created_at': '2024-09-03T21:00:37.055906-07:00', 'updated_at': '2024-09-03T21:04:06.556679-07:00', 'user_id': 'bob'}], 'entities': [{'source': 'charlie', 'relation': 'likes', 'destination': 'baseball'}]}
@prateekchhikara
Copy link
Collaborator

Hi @nibankougen we knew about this issue and released a patch last week. Could you please upgrade your mem0 package? Let me know if you are still having this problem.

@nibankougen
Copy link
Author

There is another problem with graph memory sometimes not registering, but the filtering by user_id was working.
Thank you very much.

Alice: {'memories': [{'id': 'aed86cb9-a214-44a8-8571-b11d69616e05', 'memory': 'Charlie likes apples', 'hash': '81ccc605a4858b2a7c9c541b015d2998', 'metadata': None, 'score': 0.5901568, 'created_at': '2024-09-04T19:19:24.997233-07:00', 'updated_at': None, 'user_id': 'alice'}], 'entities': [{'source': 'charlie', 'relation': 'likes', 'destination': 'apples'}]}

Bob: {'memories': [{'id': '2ad0d497-159c-4515-aa75-66cf2aaed456', 'memory': 'Charlie likes baseball', 'hash': 'c2f687de030c5f2ba7d3412cb5e99529', 'metadata': None, 'score': 0.59092736, 'created_at': '2024-09-04T19:19:29.395515-07:00', 'updated_at': None, 'user_id': 'bob'}], 'entities': []}

@nibankougen nibankougen reopened this Sep 5, 2024
@Dev-Khant Dev-Khant added the bug Something isn't working label Sep 5, 2024
@chenm1xuexi
Copy link

chenm1xuexi commented Sep 6, 2024

by viewing the source code,

class MemoryGraph:
    def __init__(self, config):
        self.config = config
        self.graph = Neo4jGraph(self.config.graph_store.config.url, self.config.graph_store.config.username, self.config.graph_store.config.password)
        self.embedding_model = EmbedderFactory.create(
            self.config.embedder.provider, self.config.embedder.config
        )

        if self.config.llm.provider:
            llm_provider = self.config.llm.provider
        if self.config.graph_store.llm:
            llm_provider = self.config.graph_store.llm.provider
        else:
            llm_provider = "openai_structured"

        self.llm = LlmFactory.create(llm_provider, self.config.llm.config)
        self.user_id = None
        self.threshold = 0.7

You can see self.user_id = None
When you invoke m.add and set user_id param self.user_id will be change to your set user_id,
But m.search will not reset user_id

@prateekchhikara prateekchhikara self-assigned this Sep 10, 2024
@prateekchhikara
Copy link
Collaborator

@chenm1xuexi I understand your concern. However, the user_id in the add call is used to create the source node. Why do you think resetting "user_id" matters for search?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants