Módulo: Mongoid::SearchIndexable
- Estendido por:
- ActiveSupport::Concern
- Incluído em:
- Componível
- Definido em:
- lib/mongoid/search_indexable.rb
Visão geral
Encapsula o comportamento em torno do gerenciamento de índices de pesquisa. Este recurso só é suportado quando conectado a um cluster Atlas .
Definido sob namespace
Módulos: Métodos de classe Classes: Status
Recolhimento do Resumo do método de instância
-
#auto_embed_search(índice: nil, path: nil, limit: 10, num_candidates: nil, filtro: nil, exact: false, model: nil, pipeline: []) ⇒ array<Mongoid::Document>
Executa uma query do Atlas Vector Search para documentos com texto semelhante ao campo de texto armazenado deste documento, usando auto-embedding.
-
#vector_search(índice: nil, caminho: nil, limite: 10, num_candidates: nil, filtro: nil, pipeline: []) ➤ array<Mongoid::Document>
Executa uma pesquisa vetorial para documentos semelhantes a este, usando a incorporação armazenada deste documento como vetor de query.
Detalhes do método de instância
#auto_embed_search(índice: nil, path: nil, limit: 10, num_candidates: nil, filtro: nil, exact: false, model: nil, pipeline: []) ⇒ Array<Mongoid::Document>
Executa uma query do Atlas Vector Search para documentos com texto semelhante ao campo de texto armazenado deste documento, usando auto-embedding. O document atual é excluído dos resultados.
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# Arquivo 'lib/mongoid/search_indexable.rb', linha 123 def (Índice: nada, caminho: nada, limit: 10, num_candidates: nada, filtro: nada, exato: false, modelo: nada, pipeline: []) # rubocop:disable Metrics/ParameterLists _index, resolvido_path = auto.classe.enviar(:resolve_auto_embed_index, index, caminho) text = public_send(resolvido_path) se text.nada? aumentar ArgumentError, "#{Resolveu_path} é nulo neste document; não é possível executar a pesquisa de incorporação automática" end self_filter = { '_id' => { '$ne' => _id } } filtro_combinação = filtro, filtro ? { '$e' => [ self_filter, filtro, filtro ] } : self_filter auto.classe.( text, Índice: index, caminho: caminho, limit: limit, num_candidates: num_candidates, filtro: filtro_combinação, exato: exato, modelo: Modelo, pipeline: gasoduto ) end |
#vector_search(índice: nil, caminho: nil, limite: 10, num_candidates: nil, filtro: nil, pipeline: []) ➤ array<Mongoid::Document>
Executa uma pesquisa vetorial para document semelhante a este, usando a embedding armazenada deste document como vetor de query. O document em si é excluído dos resultados.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# Arquivo 'lib/mongoid/search_indexable.rb', linha 79 def vector_search(Índice: nada, caminho: nada, limit: 10, num_candidates: nada, filtro: nada, pipeline: []) _index, resolvido_path = auto.classe.enviar(:resolve_vector_index, index, caminho) query_vector = public_send(resolvido_path) se query_vector.nada? aumentar ArgumentError, "#{returned_path} é nulo neste document; não é possível executar a pesquisa vetorial" end self_filter = { '_id' => { '$ne' => _id } } filtro_combinação = filtro, filtro ? { '$e' => [ self_filter, filtro, filtro ] } : self_filter auto.classe.vector_search( query_vector, Índice: index, caminho: caminho, limit: limit, num_candidates: num_candidates, filtro: filtro_combinação, pipeline: gasoduto ) end |