How are you running AnythingLLM?
AnythingLLM desktop app
What happened?
Using Qdrant as vector database and for the Embedder option: "Generic OpenAI embedding model" Nemotron-3-Embed-8B-GGUF
Every RAG retrieval against a Qdrant vector database fails. In normal chat/query
mode this silently shows up as "There is no relevant information in this
workspace to answer your query". In agent mode the error surfaces:
[AgentHandler] memory.search raised an error. e.search is not a function
TypeError: e.search is not a function
at Wg.similarityResponse (resources\backend\server.js:875:60730)
The workspace, collection and embedder are all configured correctly — the
collection exists, the vector count shows up in the workspace's Vector Database
tab, and the embedder runs fine (the log shows GenericOpenAiEmbedder Initialized and the query prefix being applied right before the crash).
Are there known steps to reproduce?
AnythingLLM 1.16.1 ships @qdrant/js-client-rest 1.19.0. That release
removed search from the REST client. From the qdrant-js changelog for 1.19.0:
The REST client dropped search, searchBatch, searchPointGroups,
recommend, recommendBatch, recommend_batch, recommendPointGroups,
discoverPoints and discoverBatchPoints. Use query, queryBatch and
queryGroups instead
But server/utils/vectorDbProviders/qdrant/index.js still calls the old method
in similarityResponse:
const responses = await client.search(namespace, {
vector: queryVector,
limit: topN,
with_payload: true,
});
I confirmed the method is gone in the shipped package:
> node -e "const p=require('@qdrant/js-client-rest'); console.log(typeof p.QdrantClient.prototype.search, typeof p.QdrantClient.prototype.query)"
undefined function
Because the TypeError is thrown client-side, no search request is ever sent.
The Qdrant server log for a full chat attempt shows only the connection and the
namespace check:
"GET /cluster HTTP/1.1" 200 78 "-" "qdrant-js/1.19.0"
"GET /collections/my_collection HTTP/1.1" 200 591 "-" "qdrant-js/1.19.0"
There is never a POST /collections/my_collection/points/search. That is what
makes this confusing to diagnose: the connection works, the settings page reads
the vector count correctly, and it looks like an embedding or configuration
problem.
Since similarityResponse is shared by all chat modes, this affects Chat, Query
and Agent equally. It is not model-dependent — I reproduced it with several
different LLMs.
Are there known steps to reproduce?
- Set the vector database to Qdrant (I used Qdrant server 1.19.0 in Docker).
- Create a workspace and embed any document, or point the workspace slug at an
existing collection.
- Ask anything in the chat.
- Nothing is retrieved.
storage/logs/backend-*.log shows
TypeError: e.search is not a function at ... similarityResponse, and the
Qdrant server log shows no search request.
Suggested fix
Migrate the call to query(), which is the documented replacement. It returns
{ points: [...] } instead of a bare array:
const { points: responses } = await client.query(namespace, {
query: queryVector,
limit: topN,
with_payload: true,
});
It would probably also be worth pinning @qdrant/js-client-rest rather than
using a caret range, since this was a breaking change picked up automatically at
build time.
Workaround
For anyone stuck on 1.16.1: adding a small search() shim back to
node_modules/@qdrant/js-client-rest/dist/cjs/qdrant-client.js restores
retrieval. It just forwards to query() and unwraps .points:
async search(collection_name, { vector, filter, params, limit = 10, offset,
with_payload = true, with_vector = false,
score_threshold, consistency, timeout, shard_key } = {}) {
const response = await this.query(collection_name, {
consistency, timeout, shard_key,
query: vector, filter, params,
score_threshold, limit, offset,
with_vector, with_payload,
});
return response?.points ?? [];
}
After that the POST /points/search requests show up in the Qdrant log and
retrieval works normally. Note this gets wiped by every app update.
### LLM Provider & Model (if applicable)
any open weight LLM with tool use capabilities.
### Embedder Provider & Model (if applicable)
Nemotron-3-Embed-8B-GGUF
How are you running AnythingLLM?
AnythingLLM desktop app
What happened?
Using Qdrant as vector database and for the Embedder option: "Generic OpenAI embedding model" Nemotron-3-Embed-8B-GGUF
Every RAG retrieval against a Qdrant vector database fails. In normal chat/query
mode this silently shows up as "There is no relevant information in this
workspace to answer your query". In agent mode the error surfaces:
The workspace, collection and embedder are all configured correctly — the
collection exists, the vector count shows up in the workspace's Vector Database
tab, and the embedder runs fine (the log shows
GenericOpenAiEmbedder Initializedand the query prefix being applied right before the crash).Are there known steps to reproduce?
AnythingLLM 1.16.1 ships
@qdrant/js-client-rest1.19.0. That releaseremoved
searchfrom the REST client. From the qdrant-js changelog for 1.19.0:But
server/utils/vectorDbProviders/qdrant/index.jsstill calls the old methodin
similarityResponse:I confirmed the method is gone in the shipped package:
Because the TypeError is thrown client-side, no search request is ever sent.
The Qdrant server log for a full chat attempt shows only the connection and the
namespace check:
There is never a
POST /collections/my_collection/points/search. That is whatmakes this confusing to diagnose: the connection works, the settings page reads
the vector count correctly, and it looks like an embedding or configuration
problem.
Since
similarityResponseis shared by all chat modes, this affects Chat, Queryand Agent equally. It is not model-dependent — I reproduced it with several
different LLMs.
Are there known steps to reproduce?
existing collection.
storage/logs/backend-*.logshowsTypeError: e.search is not a function at ... similarityResponse, and theQdrant server log shows no search request.
Suggested fix
Migrate the call to
query(), which is the documented replacement. It returns{ points: [...] }instead of a bare array:It would probably also be worth pinning
@qdrant/js-client-restrather thanusing a caret range, since this was a breaking change picked up automatically at
build time.
Workaround
For anyone stuck on 1.16.1: adding a small
search()shim back tonode_modules/@qdrant/js-client-rest/dist/cjs/qdrant-client.jsrestoresretrieval. It just forwards to
query()and unwraps.points:After that the
POST /points/searchrequests show up in the Qdrant log andretrieval works normally. Note this gets wiped by every app update.