Y di adiós a la búsqueda basada en palabras clave
Mientras que GPT 3+ o ChatGPT, la ingeniería rápida es más fácil de entender intuitivamente. Con muchas guías y ejemplos disponibles en la web y las redes sociales. Tal como
Las incrustaciones requieren programación y se entienden menos debido a varios comportamientos contrarios a la intuición sobre cómo funciona. Sin embargo, es una herramienta extremadamente poderosa para la búsqueda, o para usarse junto con modelos existentes basados en texto, para varios otros posibles casos de uso.
Podría decirse que las incrustaciones son una herramienta igualmente poderosa, dentro del conjunto de herramientas de IA, para los modelos de instrucción. Debido a su capacidad para manejar búsquedas en diferentes palabras y oraciones, o incluso en idiomas completos. Centrándonos en la búsqueda del documento relevante, para cualquier consulta.
Por ejemplo, se puede utilizar para potenciar la búsqueda y la respuesta a partir de una documentación en inglés. En Inglés ...
O japonés...
O cualquier otro idioma que admita el modelo de IA.
La incrustación de vectores se puede utilizar para la búsqueda u otras tareas, como la respuesta a preguntas, la clasificación de texto y la generación de texto.
Tenga en cuenta que este artículo se centra en el aspecto de búsqueda, el proceso de respuesta se encuentra en un artículo de seguimiento.
Para generar una incrustación de vectores, se utilizará un modelo de IA de incrustación, que convierte cualquier texto (un documento grande, una oración o incluso una palabra) en una "matriz de N dimensiones", llamada vector.
Por ejemplo, una oración como How do I write a UI test script with Uilicious?
Se puede convertir en una matriz (llamada vector) a través del modelo OpenAI text-embedding-ada-002 : [0.010046141, -0.009800113, 0.014761676, -0.022538893, ... an a 1000+ numbers]
Este vector representa la comprensión resumida del texto del modelo de IA. Esto se puede considerar como un "resumen de N palabras" escrito en un idioma que solo la IA puede entender.
Donde los documentos relacionados tendrán una distancia cercana entre sí, según la comprensión del documento por parte de la IA (y no solo su texto).
Este es un gran salto más allá de las simples búsquedas de palabras clave de los motores de búsqueda clásicos, ya que puede manejar variaciones en la estructura de las oraciones y el lenguaje (siempre que el modelo de IA esté capacitado para comprender dicho lenguaje).
Tome lo siguiente como un ejemplo hipotético, simplificado de manera incorrecta en un espacio de 2 dimensiones para que sea más fácil de entender:
Que se puede presentar visualmente como lo siguiente en el espacio 2D.
Por ejemplo, D1,2,3 son todos documentos relacionados con cómo usar Uilicious de varias maneras y están agrupados en un grupo
D4 y D5, siendo simplemente enlaces y sin ningún valor inherente más allá de eso, se agrupan por separado en otro grupo.
Además, D1 y D2 se agrupan aún más, ya que se trata de comandos de prueba Uilicious, utilizando nuestro propio lenguaje de prueba basado en JavaScript.
Mientras que D3 se agrupa por separado, ya que se trata del uso directo del protocolo de controlador web en nuestra infraestructura, que está destinado a un caso de uso y audiencias diferentes.
De manera similar, para Q1 y Q2, a pesar de las drásticas diferencias en la estructura de la oración y el lenguaje, debido a que es esencialmente la misma pregunta, las dos preguntas se agrupan.
Además, aunque técnicamente la pregunta podría interpretarse en ambos sentidos (usando el script de prueba Uilicious o el protocolo webdriver), debido a que la pregunta implica el uso de scripts de prueba Uilicious sobre webdriver, su ubicación está "más cerca" de D1 y D2, y más lejos de D3.
Como tal, a pesar de tener grandes superposiciones en las palabras clave, estos matices en las agrupaciones son capturados por la IA codificada dentro de las incrustaciones. Destacando su diferencia distintiva con la búsqueda de palabras clave
En realidad, sin embargo, en lugar de una matriz de 2 dimensiones demasiado simplificada que es fácil de entender para los humanos, una incrustación puede ser fácilmente una matriz de más de 1000 dimensiones. Esta matriz es única para el modelo de IA específico utilizado y no se puede mezclar con las incrustaciones de otro modelo de IA.
Si bien los ejemplos simplificados de 2 dimensiones son buenos para comprender el concepto de alto nivel de agrupar en relación con una pregunta (o un punto de vista), no representa con precisión N-dimensiones.
Debido a las matemáticas complicadas de la dimensión N, puede haber situaciones en las que A puede estar cerca de B, B puede estar cerca de C, pero A y C pueden considerarse lejos el uno del otro. Lo cual es un gotcha extremadamente contrario a la intuición.
Tales distancias solo son útiles cuando se usan en relación con el mismo punto y las fórmulas utilizadas. que se puede calcular usando
Si bien la efectividad de cada fórmula tiene sus respectivos pros y contras, para diferentes casos de uso. Para la búsqueda textual, generalmente se acepta que la distancia euclidiana "funciona mejor" en la mayoría de los casos y "lo suficientemente bien" para los casos en los que otros métodos superan.
Todo lo cual, se utiliza en efecto para reducir N-Dimensiones, a una sola dimensión (distancia), relativa a un solo punto. Como resultado, esto significaría que las agrupaciones pueden / pueden cambiar drásticamente según la pregunta formulada.
Esta naturaleza de "relatividad" de las distancias hace que los índices de búsqueda de bases de datos clásicos sean ineficaces.
Si eso no tiene sentido, así es como el espacio de 4 dimensiones se visualiza correctamente con las N-Esferas matemáticas.
Ahora imagina 1.000 dimensiones? Sí, no tiene sentido.
Entonces, sin descarrilar este tema con un artículo de doctorado, resumiré esto como simplemente confiar en los profesores de matemáticas.
Todo lo que necesitamos entender es que, en general, cuanto más cerca esté la distancia entre dos puntos de incrustación de vectores, mayor será la probabilidad de que sean relevantes entre sí.
Desde el punto de vista de la implementación práctica. Comience usando primero la distancia euclidiana. Antes de considerar el uso de otras fórmulas que están ajustadas para obtener mejores resultados a través de prueba y error para su caso de uso (no recomendado).
Entonces, dado que podemos convertir varios documentos en incrustaciones, ahora podemos almacenarlos dentro de una base de datos y realizar una búsqueda con ella.
Sin embargo, a diferencia de una base de datos SQL que busca con texto, tanto la búsqueda como los datos que se buscan son el vector incrustado en sí mismo. Esto significa que los índices de búsqueda de bases de datos tradicionales son ineficaces cuando se trata de buscar incrustaciones.
Podemos tener todas sus incrustaciones de documentos, precalculadas y almacenadas en una base de datos de búsqueda de vectores. Que luego se puede usar para proporcionar una lista de coincidencias, clasificadas por la distancia más cercana.
Esto se puede hacer utilizando bases de datos vectoriales existentes como
Una cosa importante a tener en cuenta, la "tecnología de base de datos" de búsqueda vectorial es relativamente nueva. Donde una gran mayoría de las bases de datos de búsqueda de vectores se diseñaron para casos de uso que se encuentran en empresas como Facebook, Spotify o Google, con conjuntos de registros del tamaño de millones o miles de millones. Y es posible que no esté optimizado para conjuntos de datos pequeños.
Este va a ser un campo en constante cambio en los próximos años, aquí hay una 'lista increíble' de github para ayudar a rastrear y encontrar futuras bases de datos de búsqueda de vectores
Como tal, en general, encontramos que para pequeños conjuntos de datos de (<10,000 ~ 100,000 incrustaciones), mantener el conjunto de datos incrustados en la memoria y la distancia euclidiana al cuadrado de fuerza bruta es "suficientemente bueno" para muchos casos de uso, y en algún momento superará el rendimiento formal. soluciones de base de datos (que tendrán gastos generales de disco/red) con algo como lo siguiente.
La desventaja obvia de este enfoque es que todo el conjunto de datos debe ser lo suficientemente pequeño para caber en la memoria sin la sobrecarga.
Independientemente de si está utilizando la búsqueda de incrustación en memoria local o una base de datos de búsqueda de vectores formal.
La búsqueda incrustada es solo un algoritmo de ordenación y clasificación que funciona de manera flexible con varios idiomas y escenarios. La pregunta para usted como lector es cómo puede usarlo. Se puede usar tal cual como un posible reemplazo de la búsqueda de Google, o junto con otras herramientas, desde el chat hasta los juegos. Las posibilidades son infinitas y están abiertas a la exploración.
~ Hasta la próxima 🖖 larga vida y prosperidad
Eugene Cheah @ tech-talk-cto.com
Publicado originalmente en: https://substack.tech-talk-cto.com/p/introducing-ai-embeddings-and-how
Todas las imágenes utilizadas, con su debida atribución.