¡Serie práctica! Deje que las "comillas" agreguen credibilidad a las respuestas del robot RAG


En artículos anteriores, presentamos cómo usar la base de datos vectorial Milvus y LlamaIndex para construir un robot de chat básico " Chat Towards Data Science | ¿Cómo construir un robot de chat RAG usando una base de conocimientos de datos personales?" Continuando con el capítulo anterior del libro, ¿cómo construir un chatbot usando LlamaIndex? 》.


Este artículo continuará usando LlamaIndex y, según los dos artículos anteriores, modificará el código para agregar referencias a nuestros resultados. TruEra presentó la base de resultados (Groundness) en uno de sus blogs de evaluación de RAG . Los amigos interesados ​​pueden hacer clic en el enlace para verlo.

  • Pasos preparatorios


Primero, instale llama-index , python-dotenv , pymilvus  y  .openai 


! pip install llama-index python-dotenv openai pymilvus

A continuación, configure OpenAI y Zilliz Cloud (base de datos vectorial Milvus totalmente administrada) y use la función load_dotenv para extraer las variables de entorno almacenadas en el archivo .env . Luego, pase la variable de entorno y use os para obtener el valor de la variable. Usamos OpenAI como LLM, Zilliz Cloud (https://zilliz.com.cn/cloud)como base de datos vectorial. En este ejemplo, utilizamos Zilliz Cloud and Collection para lograr la persistencia de los datos.


import osfrom dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
zilliz_uri = os.getenv("ZILLIZ_URI")
zilliz_token = os.getenv("ZILLIZ_TOKEN")


  • Configuración de parámetros


A continuación, defina los parámetros del chatbot RAG. Debemos establecer 3 parámetros: modelo de incrustación, base de datos vectorial Milvus y entrada de datos LlamaIndex.


Primero, configure nuestro modelo de incrustación. En este ejemplo, utilizamos el modelo HuggingFace MiniLM L12 utilizado en el  artículo anterior para capturar datos y convertirlos en vectores de incrustación, al mismo tiempo, podemos usar el módulo HuggingFaceEmbedding a través de LlamaIndex para cargar estos datos.

from llama_index.embeddings import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L12-v2")

En segundo lugar, configure la base de datos de vectores. Dado que Zilliz Cloud puede proporcionar servicios Milvus totalmente administrados, podemos usar el módulo Mil vusVector Store para conectarnos a Zilliz Cloud. Durante este proceso, debe proporcionar el URI, el token y definir el nombre de la colección, el tipo de similitud y la clave de texto.


Anteriormente, obtuvimos el URI y el token de Zilliz Cloud a través de variables de entorno, y el nombre de la colección, el tipo de similitud y la clave de texto siguen la configuración del artículo anterior .


from llama_index.vector_stores import MilvusVectorStore
vdb = MilvusVectorStore(
uri = zilliz_uri,
token = zilliz_token,
collection_name = "tds_articles",
similarity_metric = "L2",
text_key="paragraph"
)

Finalmente, integre la abstracción de datos de LlamaIndex. Los dos componentes nativos que necesitamos son el contexto de servicio y el índice de tienda de vectores. El contexto de servicio se usa para pasar algunos servicios predefinidos, y el índice de tienda de vectores se usa para crear un "índice" LlamaIndex a partir de la base de datos de vectores. En este ejemplo, utilizamos el contexto de servicio para pasar el modelo de incrustación y crear el índice vectorial utilizando la base de datos de vectores Milvus existente y el contexto de servicio creado.


from llama_index import VectorStoreIndex, ServiceContext
service_context = ServiceContext.from_defaults(embed_model=embed_model)
vector_index = VectorStoreIndex.from_vector_store(vector_store=vdb, service_context=service_context)

  • Agregar citas a las respuestas del chatbot


Las citas y atribuciones pueden optimizar aún más nuestra aplicación RAG. A través de citas y anotaciones , podemos comprender la fuente de datos de la respuesta y evaluar qué tan precisa es la respuesta.


LlamaIndex proporciona una manera conveniente de implementar referencias a través de su módulo CitationQueryEngine , que es muy fácil de comenzar. Puede crear un motor de consulta de referencia utilizando from_args y pasando un índice vectorial. Dado que el texto fue definido previamente en el índice del vectorEste campo, por lo que no es necesario agregar nada más.


from llama_index.query_engine import CitationQueryEngine
query_engine = CitationQueryEngine.from_args(
vector_index
)

Después de configurar el motor de consultas, puede comenzar a enviar preguntas de consulta. Por ejemplo, le preguntamos al chatbot: "¿Qué es un modelo de lenguaje grande?" Como era de esperar, deberíamos poder obtener la respuesta a esta pregunta del conjunto de datos Towards Data Science.


res = query_engine.query("What is a large language model?")
from pprint import pprint
pprint(res)

La siguiente figura es un ejemplo de una respuesta. La respuesta contiene la respuesta y el texto fuente. Podemos juzgar la precisión de la respuesta según la fuente.



  • Resumir


Este artículo utiliza métodos de citas y anotaciones para agregar credibilidad a las respuestas del robot. Se puede decir que las citas y anotaciones resuelven dos problemas comunes de RAG: a través de citas y anotaciones podemos conocer la fuente de los datos. Al mismo tiempo, también podemos evaluar qué tan precisas son las respuestas obtenidas en función de la fuente de datos. Además, en el artículo también utilizamos LlamaIndex y Zilliz Cloud. LlamaIndex puede ayudarnos a crear fácilmente un motor para obtener fuentes, y Zilliz Cloud puede ayudarnos a lograr fácilmente la persistencia de los datos.


Autor de este artículo

Yujian Tang

Evangelista desarrollador de Zilliz

Lectura recomendada



Este artículo se comparte desde la cuenta pública de WeChat: ZILLIZ (Zilliztech).
Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Este artículo participa en el " Plan de creación de fuentes OSC ". Los que están leyendo pueden unirse y compartir juntos.

Broadcom anunció la terminación de la actualización de la versión deepin-IDE del programa de socios de VMware existente, una nueva apariencia. WAVE SUMMIT está celebrando su décima edición. ¡Wen Xinyiyan tendrá la última divulgación! Zhou Hongyi: El nativo de Hongmeng definitivamente tendrá éxito. El código fuente completo de GTA 5 se ha filtrado públicamente. Linus: No leeré el código en Nochebuena. Lanzaré una nueva versión del conjunto de herramientas Java Hutool-5.8.24 el año que viene. Vamos a quejarnos juntos de Furion. Exploración comercial: el barco ha pasado. Wan Zhongshan, v4.9.1.15 Apple lanza un modelo de lenguaje grande multimodal de código abierto Ferret Yakult Company confirma que se filtraron datos de 95 G
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4209276/blog/10398433
Recomendado
Clasificación