Recuperación de información
En el paso anterior de su solución de Generación aumentada de recuperación (RAG), generó las inserciones para sus fragmentos. En este paso, generará el índice en la base de datos de vectores y experimentará para determinar las búsquedas óptimas. En este artículo se describen las opciones de configuración de un índice de búsqueda, los tipos de búsquedas y las estrategias de reranking.
Este artículo forma parte de una serie. Lea la introducción.
Configuración del índice de búsqueda
Nota
En esta sección se describen recomendaciones específicas para Azure AI Search. Si usa un almacén diferente, revise la documentación adecuada para buscar las configuraciones clave de ese servicio.
El índice de búsqueda del almacén tiene una columna para cada campo de los datos. Por lo general, los almacenes de búsqueda admiten tipos de datos no vectoriales, como cadenas, booleanos, enteros, únicos, dobles y de fecha y hora. También admiten colecciones, como colecciones de tipo único y tipos de datos vectoriales. Para cada columna, debe configurar información, como el tipo de datos y si el campo es filtrable, recuperable o accesible mediante búsqueda.
Tenga en cuenta las siguientes configuraciones de búsqueda de vectores de que puede aplicar a los campos vectoriales:
algoritmo de búsqueda vectorial: El algoritmo de búsqueda de vectores de busca coincidencias relativas. Búsqueda de Azure AI tiene una opción de algoritmo de fuerza bruta, denominada K vecinos más cercanos (KNN) exhaustivos, que examina todo el espacio vectorial. También tiene una opción de algoritmo más eficaz, denominada Hierarchical Navigable Small World (HNSW), que realiza una búsqueda de vecino más cercano (ANN) aproximada.
métrica de similitud: El algoritmo usa una métrica de similitud para calcular la proximidad. Los tipos de métricas de Búsqueda de AI incluyen coseno, producto escalar y euclidiano. Si utiliza modelos de incrustación de Azure OpenAI Service, elija coseno.
el parámetro
efConstruction
: Este parámetro se usa durante la construcción de un índice HNSW. Determina el número de vecinos más cercanos que están conectados a un vector durante la indexación. Un valor deefConstruction
mayor da como resultado un índice de mejor calidad que un número menor. Pero un valor mayor requiere más tiempo, almacenamiento y proceso. Para un gran número de fragmentos, ajuste el valor deefConstruction
a un nivel más alto. Para un número bajo de fragmentos, establezca el valor más bajo. Para determinar el valor óptimo, experimente con los datos y las consultas esperadas.el parámetro
efSearch
: Este parámetro se usa durante el tiempo de consulta para establecer el número de vecinos más cercanos o fragmentos similares que usa la búsqueda.el parámetro
m
: Este parámetro es el recuento de vínculos bidireccionales. El intervalo es de 4 a 10. Los valores más bajos devuelven menos ruido en los resultados.
En Búsqueda de AI, las configuraciones de vectores se encapsulan en una configuración vectorSearch
. Al configurar las columnas vectoriales, se hace referencia a la configuración adecuada para esa columna vectorial y se establece el número de dimensiones. El atributo de dimensiones de la columna vectorial representa el número de dimensiones que genera el modelo de inserción. Por ejemplo, el modelo text-embedding-3-small optimizado para almacenamiento genera 1.536 dimensiones.
Elección del enfoque de búsqueda
Al ejecutar consultas desde el orquestador de mensajes en el almacén de búsqueda, tenga en cuenta los siguientes factores:
Tipo de búsqueda que desea realizar, como vector, palabra clave o híbrido
Si va a consultar una o varias columnas
Si desea ejecutar manualmente varias consultas, como una consulta de palabras clave y una búsqueda vectorial
Si necesita dividir la consulta en subconsultas
Si debe usar el filtrado en las consultas
El orquestador de mensajes puede usar un enfoque estático o un enfoque dinámico que combine enfoques basados en pistas de contexto del mensaje. En las secciones siguientes se abordan estas opciones para ayudarle a encontrar el enfoque adecuado para la carga de trabajo.
Tipos de búsqueda
Las plataformas de búsqueda suelen admitir búsquedas de texto completo y vectores. Algunas plataformas, como AI Search, admiten búsquedas híbridas.
Búsqueda de vectores
Búsquedas vectoriales comparan la similitud entre la consulta vectorizada (entrada) y los campos vectoriales. Para más información, consulte Elegir un servicio de Azure para búsquedas de vectores.
Importante
Debe realizar las mismas operaciones de limpieza que realizó en fragmentos antes de insertar las consultas. Por ejemplo, si ha convertido en minúsculas todas las palabras del fragmento incrustado, debe convertir en minúsculas todas las palabras de la consulta antes de incrustar.
Nota
Puede realizar una búsqueda de vectores en varios campos vectoriales en la misma consulta. En ai Search, esta práctica se considera una búsqueda híbrida. Para obtener más información, consulte [] "búsqueda híbrida" [].
El código de ejemplo siguiente realiza una búsqueda vectorial en el campo contentVector.
embedding = embedding_model.generate_embedding(
chunk=str(pre_process.preprocess(query))
)
vector = RawVectorQuery(
k=retrieve_num_of_documents,
fields="contentVector",
vector=embedding,
)
results = client.search(
search_text=None,
vector_queries=[vector],
top=retrieve_num_of_documents,
select=["title", "content", "summary"],
)
El código que inserta la consulta preprocesa primero la consulta. Ese preprocesamiento debe ser el mismo código que preprocesa los fragmentos antes de insertar. Debe usar el mismo modelo de inserción que insertó los fragmentos.
Búsqueda de texto completo
Las búsquedas de texto completo coinciden con el texto sin formato que se almacena en un índice. Es habitual extraer palabras clave de una consulta y usar esas palabras clave extraídas en una búsqueda de texto completo en una o varias columnas indizada. Puede configurar búsquedas de texto completo para devolver coincidencias si coinciden los términos o todos los términos.
Experimento para determinar contra qué campos se ejecutarán búsquedas de texto completo. Como se describe en el artículo de la fase de enriquecimiento , debe utilizar los campos de metadatos de palabras clave y entidades para búsquedas de texto completo en escenarios donde el contenido tiene un significado semántico similar, pero las entidades o las palabras clave difieren. Otros campos comunes que se deben tener en cuenta para la búsqueda de texto completo incluyen título, resumen y texto de fragmento.
El código de ejemplo siguiente realiza una búsqueda de texto completo en los campos de título, contenido y resumen.
formatted_search_results = []
results = client.search(
search_text=query,
top=retrieve_num_of_documents,
select=["title", "content", "summary"],
)
formatted_search_results = format_results(results)
Búsqueda híbrida
AI Search admite consultas híbridas que contienen una o varias búsquedas de texto y una o varias búsquedas vectoriales. La plataforma realiza cada consulta, obtiene los resultados intermedios, vuelve a clasificar los resultados mediante la fusión de clasificación recíproca y devuelve los N resultados principales.
El código de ejemplo siguiente realiza una búsqueda de texto completo en los campos de título, contenido y resumen. También realiza búsquedas vectoriales en los campos contentVector y questionVector. Búsqueda de IA ejecuta todas las consultas en paralelo, vuelve a clasificar los resultados y devuelve los principales retrieve_num_of_documents.
embedding = embedding_model.generate_embedding(
chunk=str(pre_process.preprocess(query))
)
vector1 = RawVectorQuery(
k=retrieve_num_of_documents,
fields="contentVector",
vector=embedding,
)
vector2 = RawVectorQuery(
k=retrieve_num_of_documents,
fields="questionVector",
vector=embedding,
)
results = client.search(
search_text=query,
vector_queries=[vector1, vector2],
top=retrieve_num_of_documents,
select=["title", "content", "summary"],
)
Varias consultas manuales
Puede ejecutar varias consultas, como una búsqueda vectorial y una búsqueda de texto completo de palabras clave, manualmente. Los resultados se agregan, se vuelven a clasificar manualmente y se devuelven los resultados principales. Tenga en cuenta los siguientes casos de uso para varias consultas manuales:
Se usa una plataforma de búsqueda que no admite búsquedas híbridas. Puede usar varias consultas manuales para realizar su propia búsqueda híbrida.
Quiere ejecutar búsquedas de texto completo en distintas consultas. Por ejemplo, puede extraer palabras clave de la consulta y ejecutar una búsqueda de texto completo en el campo de metadatos de palabras clave. A continuación, puede extraer entidades y ejecutar una consulta en el campo de metadatos de entidades.
Quiere controlar el proceso de reclasificación.
La consulta requiere que ejecute subconsultas descompuestas para recuperar datos fundamentales de varias fuentes.
Traducción de consultas
La traducción de consultas es un paso opcional en la fase de recuperación de información de una solución RAG. Este paso transforma o traduce una consulta en un formulario optimizado para recuperar mejores resultados. Los métodos de traducción de consultas incluyen aumento, descomposición, reescritura e incrustaciones hipotéticas de documentos (HyDE).
Aumento de consultas
El aumento de consultas es un paso de traducción que hace que la consulta sea más sencilla y más utilizable y mejore el contexto. Debería considerar ampliar si su consulta es pequeña o vaga. Por ejemplo, considere la consulta "Comparar las ganancias de Microsoft". Esa consulta no incluye períodos de tiempo ni unidades de tiempo para comparar y solo especifica las ganancias. Considere una versión aumentada de la consulta, como "Comparar las ganancias e ingresos de Microsoft en el año actual frente al año pasado por trimestre". La nueva consulta es clara y específica.
Al aumentar una consulta, se mantiene la consulta original, pero se agrega más contexto. No quite ni modifique la consulta original y no cambie la naturaleza de la consulta.
Puede usar un modelo de lenguaje para aumentar una consulta. Pero no puedes aumentar todas las consultas. Si tiene contexto, puede pasarlo al modelo de lenguaje para mejorar la consulta. Si no tiene contexto, debe determinar si el modelo de lenguaje tiene información que puede usar para aumentar la consulta. Por ejemplo, si usa un modelo de lenguaje grande, como un modelo GPT, puede determinar si la información sobre la consulta está disponible fácilmente en Internet. Si es así, puede usar el modelo para aumentar la consulta. De lo contrario, no debe aumentar la consulta.
En la siguiente indicación, un modelo de lenguaje amplía una consulta. Este mensaje incluye ejemplos para cuando la consulta tiene contexto y no. Para obtener más información, consulte Repositorio del acelerador de experimentos RAG de GitHub.
Input Processing:
Analyze the input query to identify the core concept or topic.
Check whether the query provides context.
If context is provided, use it as the primary basis for augmentation and explanation.
If no context is provided, determine the likely domain or field, such as science, technology, history, or arts, based on the query.
Query Augmentation:
If context is provided:
Use the given context to frame the query more specifically.
Identify other aspects of the topic not covered in the provided context that enrich the explanation.
If no context is provided, expand the original query by adding the following elements, as applicable:
Include definitions about every word, such as adjective or noun, and the meaning of each keyword, concept, and phrase including synonyms and antonyms.
Include historical context or background information, if relevant.
Identify key components or subtopics within the main concept.
Request information about practical applications or real-world relevance.
Ask for comparisons with related concepts or alternatives, if applicable.
Inquire about current developments or future prospects in the field.
Other Guidelines:
Prioritize information from provided context when available.
Adapt your language to suit the complexity of the topic, but aim for clarity.
Define technical terms or jargon when they're first introduced.
Use examples to illustrate complex ideas when appropriate.
If the topic is evolving, mention that your information might not reflect the very latest developments.
For scientific or technical topics, briefly mention the level of scientific consensus if relevant.
Use Markdown formatting for better readability when appropriate.
Example Input-Output:
Example 1 (With provided context):
Input: "Explain the impact of the Gutenberg Press"
Context Provided: "The query is part of a discussion about revolutionary inventions in medieval Europe and their long-term effects on society and culture."
Augmented Query: "Explain the impact of the Gutenberg Press in the context of revolutionary inventions in medieval Europe. Cover its role in the spread of information, its effects on literacy and education, its influence on the Reformation, and its long-term impact on European society and culture. Compare it to other medieval inventions in terms of societal influence."
Example 2 (Without provided context):
Input: "Explain CRISPR technology"
Augmented Query: "Explain CRISPR technology in the context of genetic engineering and its potential applications in medicine and biotechnology. Cover its discovery, how it works at a molecular level, its current uses in research and therapy, ethical considerations surrounding its use, and potential future developments in the field."
Now, provide a comprehensive explanation based on the appropriate augmented query.
Context: {context}
Query: {query}
Augmented Query:
Descomposición
Las consultas complejas requieren más de una colección de datos para poner en tierra el modelo. Por ejemplo, la consulta "¿Cómo funcionan los coches eléctricos y cómo se comparan con los vehículos del motor de combustión interna (ICE)? probablemente requiere datos de puesta a tierra de varias fuentes. Una fuente podría describir cómo funcionan los coches eléctricos, donde otro los compara con los vehículos ICE.
La descomposición es el proceso de dividir una consulta compleja en varias subconsultas más pequeñas y sencillas. Ejecute cada una de las consultas descomponidas de forma independiente y agregue los principales resultados de todas las consultas descomponidas como contexto acumulado. A continuación, ejecute la consulta original, que pasa el contexto acumulado al modelo de lenguaje.
Debe determinar si la consulta requiere varias búsquedas antes de ejecutar las búsquedas. Si necesita varias subconsultas, puede ejecutar varias consultas manuales para todas las consultas. Use un modelo de lenguaje para determinar si se recomiendan varias subconsultas.
El siguiente indicador clasifica una pregunta como simple o compleja. Para obtener más información, consulte Repositorio del acelerador de experimentos RAG de GitHub.
Consider the given question to analyze and determine whether it falls into one of these categories:
1. Simple, factual question
a. The question asks for a straightforward fact or piece of information.
b. The answer can likely be found stated directly in a single passage of a relevant document.
c. Breaking the question down further is unlikely to be beneficial.
Examples: "What year did World War 2 end?", "What is the capital of France?", "What are the features of productX?"
2. Complex, multipart question
a. The question has multiple distinct components or asks for information about several related topics.
b. Different parts of the question likely need to be answered by separate passages or documents.
c. Breaking the question down into subquestions for each component provides better results.
d. The question is open-ended and likely to have a complex or nuanced answer.
e. Answering the question might require synthesizing information from multiple sources.
f. The question might not have a single definitive answer and could warrant analysis from multiple angles.
Examples: "What were the key causes, major battles, and outcomes of the American Revolutionary War?", "How do electric cars work and how do they compare to gas-powered vehicles?"
Based on this rubric, does the given question fall under category 1 (simple) or category 2 (complex)? The output should be in strict JSON format. Ensure that the generated JSON is 100% structurally correct, with proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the JSON.
Example output:
{
"category": "simple"
}
También puede usar un modelo de lenguaje para descomponer una consulta compleja. El siguiente mensaje descompone una consulta compleja. Para obtener más información, consulte Repositorio del acelerador de experimentos RAG de GitHub.
Analyze the following query:
For each query, follow these specific instructions:
- Expand the query to be clear, complete, fully qualified, and concise.
- Identify the main elements of the sentence, typically a subject, an action or relationship, and an object or complement. Determine which element is being asked about or emphasized (usually the unknown or focus of the question). Invert the sentence structure. Make the original object or complement the new subject. Transform the original subject into a descriptor or qualifier. Adjust the verb or relationship to fit the new structure.
- Break the query down into a set of subqueries that have clear, complete, fully qualified, concise, and self-contained propositions.
- Include another subquery by using one more rule: Identify the main subject and object. Swap their positions in the sentence. Adjust the wording to make the new sentence grammatically correct and meaningful. Ensure that the new sentence asks about the original subject.
- Express each idea or fact as a standalone statement that can be understood with the help of the given context.
- Break down the query into ordered subquestions, from least to most dependent.
- The most independent subquestion doesn't require or depend on the answer to any other subquestion or prior knowledge.
- Try having a complete subquestion that has all information only from the base query. There's no other context or information available.
- Separate complex ideas into multiple simpler propositions when appropriate.
- Decontextualize each proposition by adding necessary modifiers to nouns or entire sentences. Replace pronouns, such as it, he, she, they, this, and that, with the full name of the entities that they refer to.
- If you still need more questions, the subquestion isn't relevant and should be removed.
Provide your analysis in the following YAML format, and strictly adhere to the following structure. Don't output anything extra, including the language itself.
type: interdependent
queries:
- [First query or subquery]
- [Second query or subquery, if applicable]
- [Third query or subquery, if applicable]
- ...
Examples:
1. Query: "What is the capital of France?"
type: interdependent
queries:
- What is the capital of France?
2. Query: "Who is the current CEO of the company that created the iPhone?"
type: interdependent
queries:
- Which company created the iPhone?
- Who is the current CEO of Apple? (identified in the previous question)
3. Query: "What is the population of New York City, and what is the tallest building in Tokyo?"
type: multiple_independent
queries:
- What is the population of New York City?
- What is the tallest building in Tokyo?
Now, analyze the following query:
{query}
Reescritura
Es posible que una consulta de entrada no esté en el formato óptimo para recuperar datos de puesta a tierra. Puede usar un modelo de lenguaje para volver a escribir la consulta y lograr mejores resultados. Vuelva a escribir una consulta para abordar los siguientes desafíos:
- Vaguedad
- Palabras clave que faltan
- Palabras innecesarias
- Semántica poco clara
En la siguiente instrucción se utiliza un modelo de lenguaje para volver a escribir una consulta. Para obtener más información, consulte Repositorio del acelerador de experimentos RAG de GitHub.
Rewrite the given query to optimize it for both keyword-based and semantic-similarity search methods. Follow these guidelines:
- Identify the core concepts and intent of the original query.
- Expand the query by including relevant synonyms, related terms, and alternate phrasings.
- Maintain the original meaning and intent of the query.
- Include specific keywords that are likely to appear in relevant documents.
- Incorporate natural language phrasing to capture semantic meaning.
- Include domain-specific terminology if applicable to the query's context.
- Ensure that the rewritten query covers both broad and specific aspects of the topic.
- Remove ambiguous or unnecessary words that might confuse the search.
- Combine all elements into a single, coherent paragraph that flows naturally.
- Aim for a balance between keyword richness and semantic clarity.
Provide the rewritten query as a single paragraph that incorporates various search aspects, such as keyword-focused, semantically focused, or domain-specific aspects.
query: {original_query}
La técnica HyDE
HyDE es una técnica alternativa de recuperación de información para soluciones RAG. En lugar de convertir una consulta en incrustaciones y usar esas inserciones para buscar las coincidencias más cercanas en una base de datos vectorial, HyDE usa un modelo de lenguaje para generar respuestas de la consulta. Estas respuestas se convierten en incrustaciones, que se usan para buscar las coincidencias más cercanas. Este proceso permite a HyDE realizar búsquedas de similitud de incrustaciones de respuesta a respuesta.
Combinación de traducciones de consultas en una canalización
Puede usar varias traducciones de consultas. Incluso puede usar las cuatro traducciones conjuntamente. En el diagrama siguiente se muestra un ejemplo de cómo puede combinar estas traducciones en una canalización.
La canalización tiene los pasos siguientes:
El paso opcional de aumento de consultas recibe la consulta original. Este paso genera la consulta original y la consulta aumentada.
El paso opcional de descompositor de consultas recibe la consulta aumentada. Este paso genera la consulta original, la consulta aumentada y las consultas descomponidas.
Cada consulta descomponida realiza tres subpasos. Una vez que todas las consultas descomponidas pasan por los subpasos, la salida incluye la consulta original, la consulta aumentada, las consultas descomponidas y un contexto acumulado. El contexto acumulado incluye la agregación de los principales N resultados de todas las consultas descompuestas que pasan por los subpasos. Los subpasos incluyen las siguientes tareas:
La reescritura opcional de consultas vuelve a escribir la consulta descompuesta.
El índice de búsqueda procesa la consulta reescrita o la consulta original. Ejecuta la consulta mediante tipos de búsqueda, como vector, texto completo, híbrido o manual múltiple. El índice de búsqueda también puede usar funcionalidades avanzadas de consulta, como HyDE.
Los resultados se vuelven a clasificar. Los principales N resultados reclasificados se agregan al contexto acumulado.
La consulta original, junto con el contexto acumulado, pasa por los mismos tres subpasos que cada consulta descomponida. Pero solo una consulta pasa por los pasos y el autor de la llamada recibe los principales N resultados.
Transferencia de imágenes a consultas
Algunos modelos bidireccionales, como GPT-4V y GPT-4o, pueden interpretar imágenes. Si utiliza estos modelos, puede evitar fragmentar las imágenes y pasar la imagen como parte de la entrada al modelo multimodal. Debe experimentar para determinar cómo se realiza este enfoque en comparación con la fragmentación de las imágenes con y sin pasar contexto adicional. También debe comparar la diferencia de costos y realizar un análisis de los beneficios.
Filtrar consultas
Para filtrar las consultas, puede usar campos en el almacén de búsqueda configurados como filtrables. Considere la posibilidad de filtrar palabras clave y entidades para las consultas que usan esos campos para ayudar a reducir el resultado. Use el filtrado para eliminar los datos irrelevantes. Recupere solo los datos que satisfagan condiciones específicas de un índice. Esta práctica mejora el rendimiento general de la consulta y proporciona resultados más relevantes. Para determinar si el filtrado beneficia a su escenario, realice experimentos y pruebas. Tenga en cuenta factores como las consultas que no tienen palabras clave o que tienen palabras clave, abreviaturas o acrónimos inexactos.
Campos de peso
En AI Search, puede ponderar los campos para influir en la clasificación de los resultados en función de los criterios.
Nota
En esta sección se describen las funcionalidades de ponderación de búsqueda de IA. Si usa una plataforma de datos diferente, investigue las capacidades de ponderación de esa plataforma.
AI Search admite perfiles de puntuación que contienen parámetros de para campos ponderados y funciones para datos numéricos. Los perfiles de puntuación solo se aplican a campos no vectores. La compatibilidad con el vector y la búsqueda híbrida está en versión preliminar. Puede crear varios perfiles de puntuación en un índice y, opcionalmente, elegir usar uno por consulta.
Los campos que se ponderan dependen del tipo de consulta y del caso de uso. Por ejemplo, si la consulta está centrada en palabras clave, como "¿Dónde tiene su sede Microsoft?", quiere un perfil de puntuación que pondera los campos de entidad o palabra clave superior. Puede usar perfiles diferentes para distintos usuarios, permitir que los usuarios elijan su enfoque o elijan perfiles basados en la aplicación.
En los sistemas de producción, solo debe conservar los perfiles que use activamente en producción.
Uso de la reclasificación
Usa el reordenamiento para ejecutar una o varias consultas, agregar los resultados y clasificar esos resultados. Tenga en cuenta los siguientes escenarios que se benefician de la reordenación de los resultados de búsqueda.
Ha realizado múltiples búsquedas manuales y desea agregar los resultados y clasificarlos.
Las búsquedas de vectores y palabras clave no siempre son precisas. Quiere aumentar el recuento de documentos que devuelve la búsqueda, lo que podría incluir algunos resultados válidos que, de lo contrario, se omitirían, y usar la reclasificación para evaluar los resultados.
Puede usar un modelo de lenguaje o un codificador cruzado para realizar el reordenamiento. Algunas plataformas, como AI Search, tienen métodos propietarios para reclasificar resultados. Puede evaluar estas opciones para tus datos para determinar qué funciona mejor para su escenario. En las secciones siguientes se proporcionan detalles sobre estos métodos.
Reclasificación de modelos de lenguaje
El siguiente aviso del modelo de lenguaje de ejemplo reclasifica los resultados. Para obtener más información, consulte Acelerador de experimento de RAG.
Each document in the following list has a number next to it along with a summary of the document. A question is also provided.
Respond with the numbers of the documents that you should consult to answer the question, in order of relevance, and the relevance score as a JSON string based on JSON format as shown in the schema section. The relevance score is a number from 1 to 10 based on how relevant you think the document is to the question. The relevance score can be repetitive. Don't output any other text, explanation, or metadata apart from the JSON string. Just output the JSON string, and strip every other text. Strictly remove the last comma from the nested JSON elements if it's present.
Don't include any documents that aren't relevant to the question. There should be exactly one document element.
Example format:
Document 1:
content of document 1
Document 2:
content of document 2
Document 3:
content of document 3
Document 4:
content of document 4
Document 5:
content of document 5
Document 6:
content of document 6
Question: user-defined question
schema:
{
"documents": {
"document_1": "Relevance",
"document_2": "Relevance"
}
}
Reclasificación entre codificadores
En el ejemplo siguiente se usa un codificador cruzado proporcionado por Hugging Face para cargar el modelo Roberta. Recorre en iteración cada fragmento y usa el modelo para calcular la similitud, que proporciona un valor. Ordena los resultados y devuelve los principales N resultados. Para obtener más información, consulte el repositorio GitHub del acelerador de experimentos RAG .
from sentence_transformers import CrossEncoder
...
model_name = 'cross-encoder/stsb-roberta-base'
model = CrossEncoder(model_name)
cross_scores_ques = model.predict(
[[user_prompt, item] for item in documents],
apply_softmax=True,
convert_to_numpy=True,
)
top_indices_ques = cross_scores_ques.argsort()[-k:][::-1]
sub_context = []
for idx in list(top_indices_ques):
sub_context.append(documents[idx])
Clasificación semántica
Búsqueda de AI tiene una característica propia denominada clasificación semántica. Esta característica usa modelos de aprendizaje profundo adaptados de Microsoft Bing que promueven los resultados más semánticamente relevantes. Para obtener más información, vea Funcionamiento del clasificador semántico.
Considere otras instrucciones de búsqueda
Tenga en cuenta las siguientes instrucciones generales al implementar la solución de búsqueda:
Devuelve los campos de título, resumen, origen y contenido sin procesar de una búsqueda.
Determine por adelantado si necesita dividir una consulta en subconsultas.
Ejecutar consultas vectoriales y de texto en varios campos. Cuando recibe una consulta, no sabe si la búsqueda de vectores o la búsqueda de texto es mejor. Y no conoce los campos ideales que debe buscar la búsqueda de vectores o la búsqueda de palabras clave. Puede buscar en varios campos, potencialmente con varias consultas, reordenar los resultados y devolver los resultados que tienen las puntuaciones más altas.
Filtre los campos de palabra clave y entidad para restringir los resultados.
Use palabras clave junto con búsquedas vectoriales. Las palabras clave filtran los resultados en un subconjunto más pequeño. El almacén de vectores funciona con ese subconjunto para encontrar las mejores coincidencias.
Evaluación de los resultados de la búsqueda
En la fase de preparación, debe haber recopilado consultas de prueba junto con la información del documento de prueba. Puede usar la siguiente información recopilada en esa fase para evaluar los resultados de la búsqueda:
- La consulta: la consulta de ejemplo
- Contexto: la colección de todo el texto de los documentos de prueba que abordan la consulta de ejemplo
Para evaluar la solución de búsqueda, puede usar los siguientes métodos de evaluación de recuperación bien establecidos:
Precisión en K: El porcentaje de elementos relevantes identificados correctamente del total de resultados de búsqueda. Esta métrica se centra en la precisión de los resultados de búsqueda.
Recuperación en K: el porcentaje de elementos relevantes en los principales K del total de elementos relevantes posibles. Esta métrica se centra en la cobertura de los resultados de búsqueda.
Clasificación mutua media (MRR): promedio de las clasificaciones recíprocas de la primera respuesta relevante en los resultados de búsqueda clasificados. Esta métrica se centra en dónde se produce el primer resultado relevante en los resultados de la búsqueda.
Debe probar ejemplos positivos y negativos. En los ejemplos positivos, quiere que las métricas estén lo más cerca posible de 1. Para los ejemplos negativos, en los que sus datos no deberían poder responder a las consultas, desea que las métricas sean lo más cercanas a 0 posible. Debería probar todas las consultas de prueba. Promedia los resultados de las consultas positivas y los resultados de las consultas negativas para comprender cómo se desempeñan en conjunto los resultados de la búsqueda.