Noticias
Modelos
Productos
keyboard_arrow_down
Lector
Lea las URL y busque en la web para obtener una base más sólida para su LLM.
Incrustaciones
Integraciones multilingües y multimodales de clase mundial.
reclasificador
Recuperador neuronal de clase mundial para maximizar la relevancia de la búsqueda.
Búsqueda profunda
Busca, lee y razona hasta encontrar la mejor respuesta.
Más
keyboard_arrow_down
Clasificador
Clasificación de cero disparos y pocos disparos para imágenes y texto.
Segmentador
Corta el texto largo en fragmentos y haz tokenización.

Documentación de la API
Generación automática de código para su IDE o LLM de Copilot
open_in_new


Compañía
keyboard_arrow_down
Sobre nosotros
Contactar con ventas
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos y condiciones


Acceso
login
Acotando la Similitud del Coseno
Validando las Cotas
Entendiendo los Límites
Implicaciones de los Límites
star
Presentado
Blog de tecnología
enero 23, 2024

¿La similitud del coseno en subespacios implica similitud del coseno en altas dimensiones?

¿Una alta similitud en el subespacio garantiza una alta similitud general entre vectores? Esta publicación examina la teoría y las implicaciones prácticas de la similitud en subespacios.
Diagram illustrating a neural network process with smiley faces and repeated mentions of "Similar" on a blackboard-like backg
Han Xiao
Han Xiao • 9 minutos de lectura
💡
El 25 de enero de 2024, OpenAI lanzó un nuevo modelo de embeddings con una nueva característica llamada "shortening", que permite a los desarrolladores recortar embeddings —esencialmente cortando números desde el final de la secuencia— sin comprometer la capacidad del embedding para representar conceptos de manera efectiva. Profundiza en este post para obtener una sólida base teórica sobre la viabilidad y el fundamento detrás de esta innovación.

Considera esto: al medir la similitud del coseno de vectores de embeddings en espacios de alta dimensionalidad, ¿cómo implica su similitud en subespacios de menor dimensión la similitud general? ¿Existe una relación directa y proporcional, o la realidad es más compleja con datos de alta dimensionalidad?

Más concretamente, ¿una alta similitud entre vectores en sus primeras 256 dimensiones asegura una alta similitud en sus 768 dimensiones completas? Por el contrario, si los vectores difieren significativamente en algunas dimensiones, ¿esto significa una baja similitud general? Estas no son meras reflexiones teóricas; son consideraciones cruciales para la recuperación eficiente de vectores, la indexación de bases de datos y el rendimiento de los sistemas RAG.

Los desarrolladores a menudo confían en heurísticas, asumiendo que una alta similitud en el subespacio equivale a una alta similitud general o que diferencias notables en una dimensión afectan significativamente la similitud general. La pregunta es: ¿estos métodos heurísticos están construidos sobre una base teórica sólida, o son simplemente suposiciones por conveniencia?

Este post profundiza en estas preguntas, examinando la teoría y las implicaciones prácticas de la similitud en subespacios en relación con la similitud general de vectores.

tagAcotando la Similitud del Coseno

Dados los vectores A,B∈Rd\mathbf{A}, \mathbf{B}\in \mathbb{R}^dA,B∈Rd, los descomponemos como A=[A1,A2]\mathbf{A}=[\mathbf{A}_1, \mathbf{A}_2]A=[A1​,A2​] y B=[B1,B2]\mathbf{B}=[\mathbf{B}_1, \mathbf{B}_2]B=[B1​,B2​], donde A1,B1∈Rm\mathbf{A}_1,\mathbf{B}_1\in\mathbb{R}^mA1​,B1​∈Rm y A2,B2∈Rn\mathbf{A}_2,\mathbf{B}_2\in\mathbb{R}^nA2​,B2​∈Rn, con m+n=dm+n=dm+n=d.

La similitud del coseno en el subespacio Rm\mathbb{R}^mRm está dada por cos⁡(A1,B1)=A1⋅B1∥A1∥∥B1∥\cos(\mathbf{A}_1, \mathbf{B}_1)=\frac{\mathbf{A}_1\cdot\mathbf{B}_1}{\|\mathbf{A}_1\|\|\mathbf{B}_1\|}cos(A1​,B1​)=∥A1​∥∥B1​∥A1​⋅B1​​; similarmente, la similitud en el subespacio Rn\mathbb{R}^nRn es cos⁡(A2,B2)=A2⋅B2∥A2∥∥B2∥\cos(\mathbf{A}_2, \mathbf{B}_2)=\frac{\mathbf{A}_2\cdot\mathbf{B}_2}{\|\mathbf{A}_2\|\|\mathbf{B}_2\|}cos(A2​,B2​)=∥A2​∥∥B2​∥A2​⋅B2​​.

En el espacio original Rd\mathbb{R}^dRd, la similitud del coseno se define como:cos⁡(A,B)=A⋅B∥A∥∥B∥=A1⋅B1+A2⋅B2∥A1∥2+∥A2∥2∥B1∥2+∥B2∥2=cos⁡(A1,B1)∥A1∥∥B1∥+cos⁡(A2,B2)∥A2∥∥B2∥∥A1∥2+∥A2∥2∥B1∥2+∥B2∥2\begin{align*}\cos(\mathbf{A},\mathbf{B})&=\frac{\mathbf{A}\cdot\mathbf{B}}{\|\mathbf{A}\|\|\mathbf{B}\|}\\&=\frac{\mathbf{A}_1\cdot\mathbf{B}_1+\mathbf{A}_2\cdot\mathbf{B}_2}{\sqrt{\|\mathbf{A}_1\|^2+\|\mathbf{A}_2\|^2}\sqrt{\|\mathbf{B}_1\|^2+\|\mathbf{B}_2\|^2}}\\&=\frac{\cos(\mathbf{A}_1, \mathbf{B}_1)\|\mathbf{A}_1\|\|\mathbf{B}_1\|+\cos(\mathbf{A}_2, \mathbf{B}_2)\|\mathbf{A}_2\|\|\mathbf{B}_2\|}{\sqrt{\|\mathbf{A}_1\|^2+\|\mathbf{A}_2\|^2}\sqrt{\|\mathbf{B}_1\|^2+\|\mathbf{B}_2\|^2}}\end{align*}cos(A,B)​=∥A∥∥B∥A⋅B​=∥A1​∥2+∥A2​∥2​∥B1​∥2+∥B2​∥2​A1​⋅B1​+A2​⋅B2​​=∥A1​∥2+∥A2​∥2​∥B1​∥2+∥B2​∥2​cos(A1​,B1​)∥A1​∥∥B1​∥+cos(A2​,B2​)∥A2​∥∥B2​∥​​

Ahora, sea s:=max⁡(cos⁡(A1,B1),cos⁡(A2,B2))s := \max(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2))s:=max(cos(A1​,B1​),cos(A2​,B2​)). Entonces, tenemos:cos⁡(A,B)≤s∥A1∥∥B1∥+s∥A2∥∥B2∥∥A1∥2+∥A2∥2∥B1∥2+∥B2∥2=∥A1∥∥B1∥+∥A2∥∥B2∥∥A1∥2+∥A2∥2∥B1∥2+∥B2∥2⋅s=cos⁡([∥A1∥,∥A2∥]⏟R2,[∥B1∥,∥B2∥]⏟R2)⋅s≤1⋅s=max⁡(cos⁡(A1,B1),cos⁡(A2,B2))\begin{align*}\cos(\mathbf{A},\mathbf{B})&\leq\frac{s\|\mathbf{A}_1\|\|\mathbf{B}_1\|+s\|\mathbf{A}_2\|\|\mathbf{B}_2\|}{\sqrt{\|\mathbf{A}_1\|^2+\|\mathbf{A}_2\|^2}\sqrt{\|\mathbf{B}_1\|^2+\|\mathbf{B}_2\|^2}}\\&=\frac{\|\mathbf{A}_1\|\|\mathbf{B}_1\|+\|\mathbf{A}_2\|\|\mathbf{B}_2\|}{\sqrt{\|\mathbf{A}_1\|^2+\|\mathbf{A}_2\|^2}\sqrt{\|\mathbf{B}_1\|^2+\|\mathbf{B}_2\|^2}}\cdot s\\&=\cos(\underbrace{[\|\mathbf{A}_1\|, \|\mathbf{A}_2\|]}_{\mathbb{R}^2}, \underbrace{[\|\mathbf{B}_1\|, \|\mathbf{B}_2\|]}_{\mathbb{R}^2})\cdot s\\&\leq 1\cdot s \\&= \max(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2))\end{align*}cos(A,B)​≤∥A1​∥2+∥A2​∥2​∥B1​∥2+∥B2​∥2​s∥A1​∥∥B1​∥+s∥A2​∥∥B2​∥​=∥A1​∥2+∥A2​∥2​∥B1​∥2+∥B2​∥2​∥A1​∥∥B1​∥+∥A2​∥∥B2​∥​⋅s=cos(R2[∥A1​∥,∥A2​∥]​​,R2[∥B1​∥,∥B2​∥]​​)⋅s≤1⋅s=max(cos(A1​,B1​),cos(A2​,B2​))​

Fin de la demostración.

Nótese que en el paso final de la demostración, aprovechamos que la similitud del coseno siempre es menor o igual a 1. Esto forma nuestro límite superior. De manera similar, podemos mostrar que el límite inferior de cos⁡(A,B)\cos(\mathbf{A},\mathbf{B})cos(A,B) está dado por:

cos⁡(A,B)≥t⋅cos⁡([∥A1∥,∥A2∥],[∥B1∥,∥B2∥]) \cos(\mathbf{A},\mathbf{B}) \geq t \cdot \cos([\|\mathbf{A}_1\|, \|\mathbf{A}_2\|], [\|\mathbf{B}_1\|, \|\mathbf{B}_2\|]) cos(A,B)≥t⋅cos([∥A1​∥,∥A2​∥],[∥B1​∥,∥B2​∥]), donde t:=min⁡(cos⁡(A1,B1),cos⁡(A2,B2))t:= \min(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2))t:=min(cos(A1​,B1​),cos(A2​,B2​)).

Nótese que para el límite inferior, no podemos concluir apresuradamente que cos⁡(A,B)≥t\cos(\mathbf{A},\mathbf{B}) \geq tcos(A,B)≥t. Esto se debe al rango de la función coseno, que abarca entre [−1,1][-1, 1][−1,1]. Debido a este rango, es imposible establecer un límite inferior más ajustado que el valor trivial de -1.

Así que en conclusión, tenemos la siguiente cota amplia: −1≤cos⁡(A,B)≤max⁡(cos⁡(A1,B1),cos⁡(A2,B2)). -1\leq\cos(\mathbf{A},\mathbf{B})\leq\max(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2)).−1≤cos(A,B)≤max(cos(A1​,B1​),cos(A2​,B2​)). y una cota más ajustada γ⋅t≤cos⁡(A,B)≤γ⋅sγ⋅min⁡(cos⁡(A1,B1),cos⁡(A2,B2))≤cos⁡(A,B)≤γ⋅max⁡(cos⁡(A1,B1),cos⁡(A2,B2))\begin{align*} \gamma \cdot t\leq&\cos(\mathbf{A}, \mathbf{B}) \leq\gamma\cdot s\\\gamma \cdot \min(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2)) \leq &\cos(\mathbf{A}, \mathbf{B}) \leq \gamma \cdot \max(\cos(\mathbf{A}_1, \mathbf{B}_1), \cos(\mathbf{A}_2, \mathbf{B}_2))\end{align*}γ⋅t≤γ⋅min(cos(A1​,B1​),cos(A2​,B2​))≤​cos(A,B)≤γ⋅scos(A,B)≤γ⋅max(cos(A1​,B1​),cos(A2​,B2​))​, donde γ=cos⁡([∥A1∥,∥A2∥],[∥B1∥,∥B2∥])\gamma = \cos([\|\mathbf{A}_1\|, \|\mathbf{A}_2\|], [\|\mathbf{B}_1\|, \|\mathbf{B}_2\|]) γ=cos([∥A1​∥,∥A2​∥],[∥B1​∥,∥B2​∥]).

tagConexión con el Lema de Johnson–Lindenstrauss

El lema JL afirma que para cualquier 0<ϵ<10 < \epsilon < 10<ϵ<1 y cualquier conjunto finito de puntos S S S en Rd \mathbb{R}^d Rd, existe un mapeo f:Rd→Rk f: \mathbb{R}^d \rightarrow \mathbb{R}^k f:Rd→Rk (con k=O(ϵ−2log⁡∣S∣) k = O(\epsilon^{-2} \log |S|) k=O(ϵ−2log∣S∣)) tal que para todos u,v∈S \mathbf{u}, \mathbf{v} \in S u,v∈S, las distancias euclidianas se preservan aproximadamente:

(1−ϵ)∥u−v∥2≤∥f(u)−f(v)∥2≤(1+ϵ)∥u−v∥2(1 - \epsilon) \|\mathbf{u} - \mathbf{v}\|^2 \leq \|f(\mathbf{u}) - f(\mathbf{v})\|^2 \leq (1 + \epsilon) \|\mathbf{u} - \mathbf{v}\|^2(1−ϵ)∥u−v∥2≤∥f(u)−f(v)∥2≤(1+ϵ)∥u−v∥2

Johnson–Lindenstrauss lemma - Wikipedia
Wikimedia Foundation, Inc.Contributors to Wikimedia projects

Para hacer que fff funcione como una selección de subespacio, podemos usar una matriz diagonal para la proyección, como una matriz 5×35 \times 35×3 fff, aunque no aleatoria (nota, la formulación típica del lema JL involucra transformaciones lineales que a menudo utilizan matrices aleatorias extraídas de una distribución gaussiana). Por ejemplo, si queremos retener la 1ª, 3ª y 5ª dimensiones de un espacio vectorial de 5 dimensiones, la matriz fff podría diseñarse de la siguiente manera: f=[100000010000001]f = \begin{bmatrix}1 & 0 & 0 \\0 & 0 & 0 \\0 & 1 & 0 \\0 & 0 & 0 \\0 & 0 & 1\end{bmatrix}f=​10000​00100​00001​​
Sin embargo, al especificar que fff sea diagonal, limitamos la clase de funciones que pueden usarse para la proyección. El lema JL garantiza la existencia de una fff adecuada dentro de la clase más amplia de transformaciones lineales, pero cuando restringimos fff a ser diagonal, puede que no exista tal fff adecuada dentro de esta clase restringida para aplicar las cotas del lema JL.

tagValidando las Cotas

Para explorar empíricamente las cotas teóricas de la similitud del coseno en espacios vectoriales de alta dimensionalidad, podemos emplear una simulación de Monte Carlo. Este método nos permite generar un gran número de pares de vectores aleatorios, calcular sus similitudes tanto en el espacio original como en los subespacios, y luego evaluar qué tan bien se mantienen en la práctica los límites teóricos superior e inferior.

El siguiente fragmento de código Python implementa este concepto. Genera aleatoriamente pares de vectores en un espacio de alta dimensionalidad y calcula su similitud del coseno. Luego, divide cada vector en dos subespacios, calcula la similitud del coseno dentro de cada subespacio y evalúa los límites superior e inferior de la similitud del coseno en dimensión completa basándose en las similitudes de los subespacios.

import numpy as np


def compute_cosine_similarity(U, V):
    # Normalize the rows to unit vectors
    U_norm = U / np.linalg.norm(U, axis=1, keepdims=True)
    V_norm = V / np.linalg.norm(V, axis=1, keepdims=True)
    # Compute pairwise cosine similarity
    return np.sum(U_norm * V_norm, axis=1)


# Generate random data
num_points = 5000
d = 1024
A = np.random.random([num_points, d])
B = np.random.random([num_points, d])

# Compute cosine similarity between A and B
cos_sim = compute_cosine_similarity(A, B)

# randomly divide A and B into subspaces
m = np.random.randint(1, d)
A1 = A[:, :m]
A2 = A[:, m:]
B1 = B[:, :m]
B2 = B[:, m:]

# Compute cosine similarity in subspaces
cos_sim1 = compute_cosine_similarity(A1, B1)
cos_sim2 = compute_cosine_similarity(A2, B2)

# Find the element-wise maximum and minimum of cos_sim1 and cos_sim2
s = np.maximum(cos_sim1, cos_sim2)
t = np.minimum(cos_sim1, cos_sim2)

norm_A1 = np.linalg.norm(A1, axis=1)
norm_A2 = np.linalg.norm(A2, axis=1)
norm_B1 = np.linalg.norm(B1, axis=1)
norm_B2 = np.linalg.norm(B2, axis=1)

# Form new vectors in R^2 from the norms
norm_A_vectors = np.stack((norm_A1, norm_A2), axis=1)
norm_B_vectors = np.stack((norm_B1, norm_B2), axis=1)

# Compute cosine similarity in R^2
gamma = compute_cosine_similarity(norm_A_vectors, norm_B_vectors)

# print some info and validate the lower bound and upper bound
print('d: %d\n'
      'm: %d\n'
      'n: %d\n'
      'avg. cosine(A,B): %f\n'
      'avg. upper bound: %f\n'
      'avg. lower bound: %f\n'
      'lower bound satisfied: %s\n'
      'upper bound satisfied: %s' % (
          d, m, (d - m), np.mean(cos_sim), np.mean(s), np.mean(gamma * t), np.all(s >= cos_sim),
          np.all(gamma * t <= cos_sim)))

Un validador Monte Carlo para validar los límites de similitud del coseno

d: 1024
m: 743
n: 281
avg. cosine(A,B): 0.750096
avg. upper bound: 0.759080
avg. lower bound: 0.741200
lower bound satisfied: True
upper bound satisfied: True

Una muestra de salida de nuestro validador Monte Carlo. Es importante tener en cuenta que la condición lower/upper bound satisfied se verifica para cada vector individualmente. Mientras tanto, el avg. lower/upper bound proporciona una visión general más intuitiva de las estadísticas relacionadas con estos límites, pero no influye directamente en el proceso de validación.

tagEntendiendo los Límites

En resumen, al comparar dos vectores de alta dimensionalidad, la similitud general se encuentra entre las mejores y peores similitudes de sus subespacios, ajustadas según qué tan grandes o importantes son esos subespacios en el esquema general. Esto es lo que los límites para la similitud del coseno en dimensiones superiores representan intuitivamente: el equilibrio entre las partes más y menos similares, ponderadas por sus tamaños o importancia relativa.

Illustrative comparison of two stylus pen caps and bodies with labeled sections on a black background
Cada bolígrafo tiene dos componentes principales: el cuerpo y la tapa.

Imagina que estás tratando de comparar dos objetos de múltiples partes (digamos, dos bolígrafos elegantes) basándote en su similitud general. Cada bolígrafo tiene dos componentes principales: el cuerpo y la tapa. La similitud del bolígrafo completo (tanto cuerpo como tapa) es lo que estamos tratando de determinar:

tagLímite Superior (γ⋅s\gamma \cdot sγ⋅s)

Piensa en sss como la mejor coincidencia entre las partes correspondientes de los bolígrafos. Si las tapas son muy similares pero los cuerpos no, sss es la similitud de las tapas.

Ahora, γ\gammaγ es como un factor de escala basado en el tamaño (o importancia) de cada parte. Si un bolígrafo tiene un cuerpo muy largo y una tapa corta, mientras que el otro tiene un cuerpo corto y una tapa larga, γ\gammaγ ajusta la similitud general para tener en cuenta estas diferencias en las proporciones.

El límite superior nos dice que sin importar qué tan similares sean algunas partes, la similitud general no puede exceder esta "similitud de la mejor parte" escalada por el factor de proporción.

tagLímite Inferior (γ⋅t\gamma \cdot tγ⋅t)

Aquí, ttt es la similitud de las partes que menos coinciden. Si los cuerpos de los bolígrafos son bastante diferentes pero las tapas son similares, ttt refleja la similitud del cuerpo.

Nuevamente, γ\gammaγ escala esto basado en la proporción de cada parte.

El límite inferior significa que la similitud general no puede ser peor que esta "similitud de la peor parte" después de tener en cuenta la proporción de cada parte.

tagImplicaciones de los Límites

Para los ingenieros de software que trabajan con embeddings, búsqueda vectorial, recuperación o bases de datos, entender estos límites tiene implicaciones prácticas, particularmente cuando se trata de datos de alta dimensionalidad. La búsqueda vectorial a menudo implica encontrar los vectores más cercanos (más similares) en una base de datos para un vector de consulta dado, típicamente usando la similitud del coseno como medida de cercanía. Los límites que discutimos pueden proporcionar información sobre la efectividad y las limitaciones de usar similitudes de subespacios para tales tareas.

tagUso de la Similitud de Subespacios para la Clasificación

Seguridad y Precisión: Usar la similitud de subespacios para clasificar y recuperar los k mejores resultados puede ser efectivo, pero con precaución. El límite superior indica que la similitud general no puede exceder la similitud máxima de los subespacios. Por lo tanto, si un par de vectores es altamente similar en un subespacio particular, es un fuerte candidato para ser similar en el espacio de alta dimensionalidad.

Posibles Errores: Sin embargo, el límite inferior sugiere que dos vectores con baja similitud en un subespacio aún podrían ser bastante similares en general. Por lo tanto, confiar únicamente en la similitud de subespacios podría perder algunos resultados relevantes.

tagConceptos Erróneos y Precauciones

Sobreestimar la Importancia del Subespacio: Un concepto erróneo común es sobreestimar la importancia de un subespacio particular. Si bien la alta similitud en un subespacio es un buen indicador, no garantiza una alta similitud general debido a la influencia de otros subespacios.

Ignorar Similitudes Negativas: En casos donde la similitud del coseno en un subespacio es negativa, indica una relación opuesta en esa dimensión. Los ingenieros deben ser cautelosos sobre cómo estas similitudes negativas impactan la similitud general.

Categorías:
star
Presentado
Blog de tecnología
rss_feed
Oficinas
location_on
Sunnyvale, California
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, EE. UU.
location_on
Berlín, Alemania (sede central)
Prinzessinnenstraße 19-20, 10969 Berlín, Alemania
location_on
Beijing, China
Piso 5, Edificio 6, No.48 Haidian West St. Pekín, China
location_on
Shenzhen, China
Piso 402, Edificio de Tecnología Fu'an, Shenzhen, China
Fundación de búsqueda
Lector
Incrustaciones
reclasificador
Búsqueda profunda
Clasificador
Segmentador
Documentación API
Obtener la clave API de Jina
Límite de velocidad
Estado de la API
Compañía
Sobre nosotros
Contactar con ventas
Sala de prensa
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos
Seguridad
Términos y condiciones
Privacidad
Administrar cookies
email
Jina AI © 2020-2025.