Implementing Vector Similarity Search Inside Zoho Desk
Keyword search in help portals fails on vocabulary mismatch. A customer writes "can't sign in"; your article says "authentication failure". No keyword overlaps, so nothing matches. Vector embeddings solve this by comparing meaning rather than characters.
Building the transformation pipeline
Configure a Zoho Desk workflow webhook on ticket creation that posts subject and description to a small service endpoint. That service calls an embedding API, receives a dense vector and stores it alongside the ticket ID in a vector index. Keep the call asynchronous so ticket creation never blocks on an external API.
Running similarity queries
Compare the new vector against your index using cosine similarity and return the top matches above a tuned threshold. Set the threshold empirically against a labelled sample of your own historical tickets — a value that works for one product's vocabulary will be wrong for another's.
Surfacing results to agents
Write matches back into a custom Desk field or render them in a Desk extension panel inside the ticket view. The agent sees the three most semantically similar resolved tickets and the linked knowledge-base article without leaving the screen.
Practical cautions
Re-embed your index when you change embedding models — mixing vectors from different models produces meaningless similarity scores. Strip signatures, disclaimers and quoted reply chains before embedding, or every ticket will look similar because every ticket shares the same footer.
Worked example
A 50-agent helpdesk running roughly 400 tickets a day indexed about 18 months of closed tickets (around 95,000 records) using a 1536-dimension embedding model. Cosine similarity above 0.84 against the labelled sample returned true duplicates with few false positives; below 0.78 the matches were topically related but not the same issue, so 0.80 to 0.84 became the tuned threshold for surfacing a match to an agent versus staying silent. Re-embedding the full 95,000-ticket index after a model change took under two hours on a single batch job, which is worth budgeting for before switching providers.