Кластеризация индексных документов с помощью векторного поиска?

Мне интересно, есть ли что-нибудь уже встроенное в векторный индекс когнитивного поиска для возврата кластеров похожих вложений, или же разработчику (т. е. нам) по-прежнему придется напрямую запускать автономный алгоритм на вложениях?

Я знаю, что могу получить кластеры по требованию, по сути, выполнив поиск по сходству из одного встраивания, но я хочу взять набор вложений документов и идентифицировать похожие кластеры, чтобы мы могли автоматически генерировать коллекции документов, которые могут быть тематически связанный.

Примерно так:https://dylancastillo.co/clustering-documents-with-openai-langchain-hdbscan

Я предполагаю, что нам придется с этим справиться, но я хотел убедиться, что это еще не доступно в Когнитивном поиске.

1 ответ

Проблема в том, что структура графа HNSW не оптимизирована для приложений кластеризации, поскольку она ориентирована на эффективный поиск ближайших соседей. В результате иерархическая структура графа ближнего мира не дает никаких гарантий того, что все ближайшие соседи будут находиться на определенном расстоянии в графе от данного узла, что делает навигацию по графу для идентификации кластеров неоптимальной.

И наоборот, кластеризация обычно предполагает организацию точек данных в отдельные и четко определенные группы с хорошим разделением, компактностью, надежностью, размером и т. д. Если вы ищете такие приложения для кластеризации, рассмотрите возможность запуска специальных алгоритмов кластеризации в векторном корпусе, таких как k- означает DBSCAN (пространственная кластеризация приложений с шумом на основе плотности) или агломеративная кластеризация. Все это доступно с помощью scikit.learn.

Вы также можете запустить «специальную кластеризацию», используя индекс hnsw, получив больший наборkприблизительные ближайшие соседи для данной точки запроса, затем запустите алгоритм кластеризации, чтобы увидеть, существует ли хорошее групповое разделение этих точек. Затем вы можете определить, к какой группе принадлежит ваша точка запроса, и использовать ее в качестве кластера. Это может помочь справиться со случаем, когда ваша точка запроса может не быть сосредоточена в определенном кластере (распределение которого вы еще не знаете), и, таким образом, «ближайшие соседи» могут содержать точки в других кластерах.

Другие вопросы по тегам