Exploración de los desafíos de recuperación de información: escala y precisión
La generación aumentada de recuperación (RAG) depende de extraer los pasajes correctos de los datos antes de que el modelo responda. A medida que crece el contenido, se muestran dos problemas: escala y precisión. La escala consiste en cómo crecen los patrones de acceso y tamaño de los datos y la rapidez con que vuelven los resultados. La precisión trata de si esos resultados responden realmente a la pregunta. Si la recuperación es lenta o fuera de objetivo, la experiencia sufre independientemente de la fuerza del modelo.
Scale
En un RAG, cada pregunta del usuario desencadena una búsqueda del vecino más cercano sobre vectores. A medida que se agregan más filas y más usuarios consultan los datos a la vez, los patrones de acceso a datos ralentizan y la presión de simultaneidad aumenta el retraso.
Mantenga la recuperación dentro de Azure Database for PostgreSQL y decida cómo se buscan y clasifican los resultados en la base de datos. Comience con pgvector para la búsqueda de similitud vectorial. Cuando crezcan los conjuntos de datos, use un índice aproximado para que las consultas eviten compararse con cada fila. Para mejorar el rendimiento, pgvector proporciona opciones de índice como IVFFlat o HNSW. En el caso de conjuntos de datos muy grandes, considere usar DiskANN a través de la extensión pg_diskann, que está diseñada para una elevada recuperación, QPS elevado (consultas por segundo) y baja latencia a gran escala.
Precisión
Las consultas rápidas no ayudan si devuelven los pasajes incorrectos. La falta de filas relevantes o su mala clasificación obliga al modelo a adivinar de manera incorrecta.
Trate la precisión como un problema de dos pasos en la base de datos. En primer lugar, genere buenos candidatos con pgvector utilizando una función de distancia que coincida con sus inserciones y con un índice que equilibre la recuperación recuerdo y la latencia para su tamaño. En segundo lugar, mejore la ordenación cuando sea necesario. Puede reordenar los resultados directamente en SQL mediante los operadores semánticos de la extensión azure_ai, como azure_ai.rank para la clasificación de relevancia basada en LLM.
También hay un acelerador de soluciones Semantic Ranker para Azure Database for PostgreSQL si desea un ejemplo de canalización completo creado en torno a este patrón. Ambos enfoques están diseñados para ejecutarse con PostgreSQL como el único nivel de datos.
Cuándo ayudan las relaciones
Algunos dominios se benefician del modelado de cómo se conectan las cosas. Un paso de gráfico puede mejorar la recuperación de la información mediante relaciones y señales de importancia. Las consultas de grafos están disponibles en Azure Database for PostgreSQL a través de la extensión Apache AGE . GraphRAG es un enfoque de Microsoft Research que combina la búsqueda vectorial con consultas de grafos para mejorar la precisión de la recuperación. Extrae un gráfico de conocimiento de los datos y usa esa estructura para proporcionar un mejor contexto al modelo de lenguaje grande.
Medición y supervisión
Debe establecer una estrategia de supervisión que capture métricas clave y proporcione información sobre el rendimiento de las consultas.
Cree una línea base del rendimiento de las consultas RAG mediante:
- Almacén de consultas: captura el texto de la consulta, el tiempo de ejecución y las estadísticas de espera para que pueda ver las principales consultas y tendencias a lo largo del tiempo.
- Información de rendimiento de consultas: visualiza los datos del almacén de consultas para el servidor flexible para resaltar consultas de larga duración y con muchos recursos.
- Métricas y libros de trabajo de Azure Monitor - gráficos y paneles de nivel de servidor para latencia, conexiones, CPU, E/S, etc.
Estas herramientas le ayudan a identificar cuellos de botella y áreas de mejora en su pipeline RAG. Le ayudan a tomar determinación sobre el rendimiento (escala), pero necesita otras estrategias para garantizar la precisión de la recuperación.
Medición de la precisión:
Aunque la medición de la precisión no es tan sencilla como la medición de la escala, puede usar algunas de las lecciones del artículo del Centro de arquitectura sobre la fase de evaluación.
- Solicitudes de registro y métricas : para cada pregunta, guarde el texto de la pregunta, las filas recuperadas de PostgreSQL con su clasificación y distancia, el contexto exacto enviado al modelo y la respuesta final del modelo.
-
Señales de proceso : en el código de la aplicación, calcule tres señales simples:
- Relevancia y uso : mida la cantidad de frases clave de la respuesta que también aparecen en los pasajes recuperados y la frecuencia con la que se citan o se repiten esos pasajes.
- Corroboración: compruebe que cada afirmación específica de la respuesta respalda al menos una fila recuperada.
- Integridad : compruebe que las partes principales de la pregunta se tratan en la respuesta con texto auxiliar de las filas recuperadas.
-
Guía de cambios con puntuaciones : use las puntuaciones para guiar los cambios y vuelva a ejecutar el mismo conjunto de pruebas pequeño:
- Si las respuestas omiten partes de la pregunta, aumente k o ajuste la fragmentación.
- Si las filas correctas no se muestran, aumente los sondeos de
IVFFlatenpgvectoro aumente la configuración deDiskANNl_value_ispara que la búsqueda tenga en cuenta más vecinos. - Si la clasificación es el problema, agregue un paso de reordenación en SQL mediante la solución de clasificación semántica para Azure Database for PostgreSQL.
- Cuando las relaciones sean importantes, agregue un breve paso de grafo con Apache AGE antes del paso de vector final.
- Seguimiento de las tendencias a lo largo del tiempo : supervise para confirmar que la precisión ha mejorado, no solo la velocidad.
A medida que su aplicación crece, vuelva a evaluar su rendimiento y ajuste la canalización RAG según sea necesario. Es importante supervisar la velocidad de recuperación y la precisión a lo largo del tiempo.
Conclusiones clave
En el caso de una ruta de acceso RAG de Postgres, se mantiene la recuperación en la base de datos, se comienza por pgvector y se pasa al índice adecuado a medida que crecen los datos y el tráfico. Agregue un pase de clasificación semántica en SQL si la ordenación debe ser más estricta. Incorpore GraphRAG para agregar un breve paso de grafo cuando las relaciones tienen significado. Evalúe periódicamente y supervise en producción para que el sistema permanezca rápido y correcto a medida que cambien los datos y el uso.