Eu sou uma pessoa visual. Aqui está o que funciona para mim como uma intuição.
Diga que cada uma das coisas que você deseja pesquisar aproximadamente são objetos físicos, como uma maçã, um cubo, uma cadeira.
Minha intuição para um LSH é que é semelhante às sombras desses objetos. Por exemplo, se você pegar a sombra de um cubo 3D, obterá um quadrado 2D em um pedaço de papel, ou uma esfera 3D obterá uma sombra circular em um pedaço de papel.
Eventualmente, existem muito mais do que três dimensões em um problema de pesquisa (onde cada palavra em um texto pode ser uma dimensão), mas a analogia da sombra ainda é muito útil para mim.
Agora podemos comparar com eficiência seqüências de bits em software. Uma cadeia de bits de comprimento fixo é mais ou menos como uma linha em uma única dimensão.
Assim, com um LSH, eu projeto as sombras dos objetos eventualmente como pontos (0 ou 1) em uma única linha de comprimento fixo / sequência de bits.
O truque é pegar as sombras de forma que elas ainda façam sentido na dimensão inferior, por exemplo, elas se assemelham ao objeto original de uma maneira suficientemente boa que possa ser reconhecida.
Um desenho 2D de um cubo em perspectiva me diz que é um cubo. Mas não consigo distinguir facilmente um quadrado 2D de uma sombra de cubo 3D sem perspectiva: os dois me parecem um quadrado.
O modo como apresento meu objeto à luz determinará se eu recebo uma boa sombra reconhecível ou não. Então, penso em um LSH "bom" como aquele que transformará meus objetos diante de uma luz, de modo que sua sombra seja melhor reconhecível como representando meu objeto.
Para recapitular: penso nas coisas que indexam com um LSH como objetos físicos como um cubo, uma mesa ou cadeira, e projeto suas sombras em 2D e, eventualmente, ao longo de uma linha (uma sequência de bits). E uma "função" boa "LSH" "é como apresento meus objetos na frente de uma luz para obter uma forma aproximadamente distinguível na planície 2D e, posteriormente, na minha sequência de bits.
Finalmente, quando quero pesquisar se um objeto que eu tenho é semelhante a alguns objetos que indexei, tomo as sombras desse objeto de "consulta" da mesma maneira para apresentar meu objeto na frente da luz (eventualmente terminando um pouco string também). E agora posso comparar o quão semelhante é essa cadeia de bits com todas as minhas outras cadeias de bits indexadas, que é um proxy para procurar todos os meus objetos se eu encontrasse uma maneira boa e reconhecível de apresentar meus objetos à minha luz.