The community members are discussing how to use metadata with Qdrant vector stores and chat engines. They explore the use of metadata filtering, and provide links to relevant documentation. However, the community members note that while the retriever engine works with metadata, the implementation with a chat engine is unclear. They discuss the differences between query engines and chat engines, and how the chat engine's behavior is controlled by system prompts and tool descriptions. The community members conclude that the chat mode is an important factor to consider when using metadata with chat engines.
You'll see that chat response object doesn't contain a metadata property, and that the responses are vastly different (the query engine acknowledges that the topic passed thru the filter are outside the message's context, the chat engine doesn't even acknowledge that)
The metadata property on the response object is not really related.
If you check, both have a source_nodes attribute -- this contains the nodes used to generate a response. Both should have metadata that aligns with your filters.
As for the difference in responses, its pretty important to understand the difference between a query engine and chat engine
A query engine takes the query, retrieves, and then sends the retrieved context + query to the LLM, using a prompt template that asks the LLM to use only the context and answer the question
For your chat engine, since you didn't specify a chat mode, it defaults to an agent. This agent has a single tool, which is the query engine from your index. On every user message, the agent looks at the message + chat history + tools, and decides to invoke a tool or not. Here, it invoked the query engine, the query engine ran, and then it rewrites the query engine response in context with the chat history. (Optionally, it could decide to not call a tool, and response direclty)
Agent behaviour is largely controlled by system prompts, and tool names + descriptions