Soy una persona visual Esto es lo que funciona para mí como intuición.
Digamos que cada una de las cosas que desea buscar aproximadamente son objetos físicos como una manzana, un cubo, una silla.
Mi intuición para un LSH es que es similar tomar las sombras de estos objetos. Al igual que si tomas la sombra de un cubo 3D, obtienes un cuadrado 2D en una hoja de papel, o una esfera 3D te dará una sombra en forma de círculo en una hoja de papel.
Eventualmente, hay muchas más de tres dimensiones en un problema de búsqueda (donde cada palabra en un texto podría ser una dimensión) pero la sombra analogía de todavía es muy útil para mí.
Ahora podemos comparar de manera eficiente cadenas de bits en software. Una cadena de bits de longitud fija es más o menos, como una línea en una sola dimensión.
Entonces, con un LSH, proyecto las sombras de los objetos eventualmente como puntos (0 o 1) en una sola línea de longitud fija / cadena de bits.
Todo el truco consiste en tomar las sombras de modo que aún tengan sentido en la dimensión inferior, por ejemplo, se parezcan al objeto original de una manera suficientemente buena que pueda reconocerse.
Un dibujo 2D de un cubo en perspectiva me dice que este es un cubo. Pero no puedo distinguir fácilmente un cuadrado 2D de una sombra de cubo 3D sin perspectiva: ambos me parecen un cuadrado.
La forma en que presente mi objeto a la luz determinará si obtengo una buena sombra reconocible o no. Así que pienso en un "buen" LSH como el que convertirá mis objetos frente a una luz de tal manera que su sombra sea mejor reconocible como representando mi objeto.
Para resumir: pienso en cosas para indexar con un LSH como objetos físicos como un cubo, una mesa o una silla, y proyecto sus sombras en 2D y eventualmente a lo largo de una línea (una cadena de bits). Y una "buena" función "LSH" es cómo presento mis objetos frente a una luz para obtener una forma aproximadamente distinguible en la llanura 2D y más tarde mi cadena de bits.
Finalmente, cuando quiero buscar si un objeto que tengo es similar a algunos objetos que indicé, tomo las sombras de este objeto de "consulta" usando la misma forma para presentar mi objeto frente a la luz (eventualmente termina con un poco cadena también). Y ahora puedo comparar cuán similar es esa cadena de bits con todas mis otras cadenas de bits indexadas, que es un proxy para buscar todos mis objetos si encuentro una forma buena y reconocible de presentar mis objetos a mi luz.