FlowiseAI
Español
Español
  • Introduction
  • Partes
    • Parte 1: Introducción
      • Recursos
    • Parte 2: Chains Avanzadas
      • Desafío 1: Traductor de Lenguas Antiguas
    • Parte 3: Gestión de Documentos y Memoria
      • Desafío 2: Chatbot Nikola Tesla
    • Parte 4: Despliegue y API
    • Parte 5: Introducción a Agentes
      • Desafíos
    • Parte 6: Agentes Avanzados
      • Desafíos
    • Parte 7: Multi-Agentes
      • Desafíos
    • Parte 8: AgentFlows
      • Desafíos
    • Parte 9: Agentes Secuenciales
      • Desafíos
    • Parte 10: Sequential Agents Avanzados
  • Recursos
    • Enlaces Útiles
    • Documentación Oficial
    • Ejemplos de Código
    • Mejores Prácticas
  • Documentación Oficial
    • Introduction
    • Primeros Pasos
    • Guía de Contribución
      • Building Node
    • Referencia de API
      • Assistants
      • Attachments
      • Chat Message
      • Chatflows
      • Document Store
      • Feedback
      • Leads
      • Ping
      • Prediction
      • Tools
      • Upsert History
      • Variables
      • Vector Upsert
    • Usar Flowise
      • Agentflows
        • Multi-Agents
        • Sequential Agents
          • Tutoriales en Video
      • API
      • Analytic
      • Almacenes de Documentos
      • Embed
      • Monitoring
      • Streaming
      • Telemetry
      • Subidas
      • Variables
      • Workspaces
      • Evaluaciones
    • Configuración
      • Auth
        • Nivel de App
        • Nivel de Chatflow
      • Databases
      • Deployment
        • AWS
        • Azure
        • Alibaba Cloud
        • Digital Ocean
        • Elestio
        • GCP
        • Hugging Face
        • Kubernetes using Helm
        • Railway
        • Render
        • Replit
        • RepoCloud
        • Sealos
        • Zeabur
      • Variables de Entorno
      • Rate Limit
      • Ejecutar Flowise detrás de proxy corporativo
      • SSO
    • Integraciones
      • LangChain
        • Agents
          • Airtable Agent
          • AutoGPT
          • BabyAGI
          • CSV Agent
          • Conversational Agent
          • Conversational Retrieval Agent
          • MistralAI Tool Agent
          • OpenAI Assistant
            • Threads
          • OpenAI Function Agent
          • OpenAI Tool Agent
          • ReAct Agent Chat
          • ReAct Agent LLM
          • Tool Agent
          • XML Agent
        • Cache
          • InMemory Cache
          • InMemory Embedding Cache
          • Momento Cache
          • Redis Cache
          • Redis Embeddings Cache
          • Upstash Redis Cache
        • Chains
          • GET API Chain
          • OpenAPI Chain
          • POST API Chain
          • Conversation Chain
          • Conversational Retrieval QA Chain
          • LLM Chain
          • Multi Prompt Chain
          • Multi Retrieval QA Chain
          • Retrieval QA Chain
          • Sql Database Chain
          • Vectara QA Chain
          • VectorDB QA Chain
        • Chat Models
          • AWS ChatBedrock
          • Azure ChatOpenAI
          • NVIDIA NIM
          • ChatAnthropic
          • ChatCohere
          • Chat Fireworks
          • ChatGoogleGenerativeAI
          • Google VertexAI
          • ChatHuggingFace
          • ChatLocalAI
          • ChatMistralAI
          • IBM Watsonx
          • ChatOllama
          • ChatOpenAI
          • ChatTogetherAI
          • GroqChat
        • Document Loaders
          • API Loader
          • Airtable
          • Apify Website Content Crawler
          • Cheerio Web Scraper
          • Confluence
          • Csv File
          • Custom Document Loader
          • Document Store
          • Docx File
          • File Loader
          • Figma
          • FireCrawl
          • Folder with Files
          • GitBook
          • Github
          • Json File
          • Json Lines File
          • Notion Database
          • Notion Folder
          • Notion Page
          • PDF Files
          • Plain Text
          • Playwright Web Scraper
          • Puppeteer Web Scraper
          • S3 File Loader
          • SearchApi For Web Search
          • SerpApi For Web Search
          • Spider Web Scraper/Crawler
          • Text File
          • Unstructured File Loader
          • Unstructured Folder Loader
          • VectorStore To Document
        • Embeddings
          • AWS Bedrock Embeddings
          • Azure OpenAI Embeddings
          • Cohere Embeddings
          • Google GenerativeAI Embeddings
          • Google VertexAI Embeddings
          • HuggingFace Inference Embeddings
          • LocalAI Embeddings
          • MistralAI Embeddings
          • Ollama Embeddings
          • OpenAI Embeddings
          • OpenAI Embeddings Custom
          • TogetherAI Embedding
          • VoyageAI Embeddings
        • LLMs
          • AWS Bedrock
          • Azure OpenAI
          • Cohere
          • GoogleVertex AI
          • HuggingFace Inference
          • Ollama
          • OpenAI
          • Replicate
        • Memory
          • Buffer Memory
          • Buffer Window Memory
          • Conversation Summary Memory
          • Conversation Summary Buffer Memory
          • DynamoDB Chat Memory
          • MongoDB Atlas Chat Memory
          • Redis-Backed Chat Memory
          • Upstash Redis-Backed Chat Memory
          • Zep Memory
        • Moderation
          • OpenAI Moderation
          • Simple Prompt Moderation
        • Output Parsers
          • CSV Output Parser
          • Custom List Output Parser
          • Structured Output Parser
          • Advanced Structured Output Parser
        • Prompts
          • Chat Prompt Template
          • Few Shot Prompt Template
          • Prompt Template
        • Record Managers
        • Retrievers
          • Custom Retriever
          • Cohere Rerank Retriever
          • Embeddings Filter Retriever
          • HyDE Retriever
          • LLM Filter Retriever
          • Multi Query Retriever
          • Prompt Retriever
          • Reciprocal Rank Fusion Retriever
          • Similarity Score Threshold Retriever
          • Vector Store Retriever
          • Voyage AI Rerank Retriever
        • Text Splitters
          • Character Text Splitter
          • Code Text Splitter
          • Html-To-Markdown Text Splitter
          • Markdown Text Splitter
          • Recursive Character Text Splitter
          • Token Text Splitter
        • Tools
          • BraveSearch API
          • Calculator
          • Chain Tool
          • Chatflow Tool
          • Custom Tool
          • Exa Search
          • Google Custom Search
          • OpenAPI Toolkit
          • Code Interpreter by E2B
          • Read File
          • Request Get
          • Request Post
          • Retriever Tool
          • SearchApi
          • SearXNG
          • Serp API
          • Serper
          • Web Browser
          • Write File
        • Vector Stores
          • AstraDB
          • Chroma
          • Elastic
          • Faiss
          • In-Memory Vector Store
          • Milvus
          • MongoDB Atlas
          • OpenSearch
          • Pinecone
          • Postgres
          • Qdrant
          • Redis
          • SingleStore
          • Supabase
          • Upstash Vector
          • Vectara
          • Weaviate
          • Zep Collection - Open Source
          • Zep Collection - Cloud
      • LiteLLM Proxy
      • LlamaIndex
        • Agents
          • OpenAI Tool Agent
          • Anthropic Tool Agent
        • Chat Models
          • AzureChatOpenAI
          • ChatAnthropic
          • ChatMistral
          • ChatOllama
          • ChatOpenAI
          • ChatTogetherAI
          • ChatGroq
        • Embeddings
          • Azure OpenAI Embeddings
          • OpenAI Embedding
        • Engine
          • Query Engine
          • Simple Chat Engine
          • Context Chat Engine
          • Sub-Question Query Engine
        • Response Synthesizer
          • Refine
          • Compact And Refine
          • Simple Response Builder
          • Tree Summarize
        • Tools
          • Query Engine Tool
        • Vector Stores
          • Pinecone
          • SimpleStore
      • Utilities
        • Custom JS Function
        • Set/Get Variable
        • If Else
        • Sticky Note
      • External Integrations
        • Zapier Zaps
    • Migration Guide
      • v1.3.0 Migration Guide
      • v1.4.3 Migration Guide
      • v2.1.4 Migration Guide
    • Use Cases
      • Calling Children Flows
      • Calling Webhook
      • Interacting with API
      • Multiple Documents QnA
      • SQL QnA
      • Upserting Data
      • Web Scrape QnA
  • Flowise
    • Flowise GitHub
    • Flowise Cloud
Powered by GitBook
On this page
  • Upsert
  • Consulta
  • Tool Agent
  • Metadata Retriever
  • XML Agent
  • Conclusión
Edit on GitHub
  1. Documentación Oficial
  2. Use Cases

Multiple Documents QnA

Aprende cómo consultar múltiples documentos correctamente

PreviousInteracting with APINextSQL QnA

Last updated 4 months ago


Del último ejemplo de , solo estamos haciendo upsert y consultando 1 sitio web. ¿Qué pasa si tenemos múltiples sitios web o múltiples documentos? Veamos cómo podemos lograrlo.

En este ejemplo, vamos a realizar QnA en 2 PDFs, que son los FORM-10K de APPLE y TESLA.

Upsert

  1. Encuentra el flujo de ejemplo llamado - Conversational Retrieval QA Chain en las plantillas del marketplace.

  1. Haz clic en Additional Parameters del PDF File Loader, y especifica el objeto metadata. Por ejemplo, el archivo PDF con el FORM-10K de Apple puede tener un objeto metadata {source: apple}, mientras que el archivo PDF con el FORM-10K de Tesla puede tener {source: tesla}. Esto se hace para segregar los documentos durante el tiempo de recuperación.

  1. Después de completar las credenciales para Pinecone, haz clic en Upsert:

Consulta

  1. ¡Después de verificar que los datos se han insertado en Pinecone, ahora podemos empezar a hacer preguntas en el chat!

  1. Sin embargo, el contexto recuperado usado para devolver la respuesta es una mezcla de documentos tanto de APPLE como de TESLA. Como puedes ver en los Source Documents:

  1. Podemos arreglar esto especificando un filtro de metadata desde el nodo Pinecone. Por ejemplo, si solo queremos recuperar contexto del FORM-10K de APPLE, podemos mirar el metadata que especificamos anteriormente en el paso Upsert, y luego usar lo mismo en el Metadata Filter a continuación:

  1. Hagamos la misma pregunta de nuevo, ahora deberíamos ver que todo el contexto recuperado es efectivamente del FORM-10K de APPLE:

Cada proveedor de base de datos vectorial tiene diferente formato de sintaxis de filtrado, se recomienda leer la documentación respectiva de la base de datos vectorial

  1. Sin embargo, el problema con esto es que el filtrado de metadata está de alguna manera "hard-coded". Idealmente, deberíamos dejar que el LLM decida qué documento recuperar basado en la pregunta.

Tool Agent

Al proporcionar tools al agent, podemos dejar que el agent decida qué tool es adecuada para usar dependiendo de la pregunta.

Name
Description

search_apple

Usa esta función para responder preguntas del usuario sobre Apple Inc (APPL). Contiene un archivo SEC Form 10K que describe las finanzas de Apple Inc (APPL) para el período 2022.

  1. Conéctalo al nodo Pinecone con el filtro de metadata {source: apple}

  1. Repite lo mismo para Tesla:

Name
Description
Pinecone Metadata Filter

search_tsla

Usa esta función para responder preguntas del usuario sobre Tesla Inc (TSLA). Contiene un archivo SEC Form 10K que describe las finanzas de Tesla Inc (TSLA) para el período 2022.

{source: tesla}

Es importante especificar una descripción clara y concisa. Esto permite que el LLM decida mejor cuándo usar qué tool

Tu flujo debería verse así:

  1. Ahora, necesitamos crear una instrucción general para el Tool Agent. Haz clic en Additional Parameters del nodo y especifica el System Message. Por ejemplo:

Eres un analista financiero experto que siempre responde preguntas con la información más relevante usando las tools a tu disposición.
Estas tools tienen información sobre las empresas en las que el usuario ha expresado interés.
Aquí hay algunas pautas que debes seguir:
* Para preguntas financieras, debes usar las tools para encontrar la respuesta y luego escribir una respuesta.
* Incluso si parece que tus tools no podrán responder la pregunta, debes usarlas para encontrar la información e ideas más relevantes. No usarlas parecerá como si no estuvieras haciendo tu trabajo.
* Puedes asumir que las preguntas financieras de los usuarios están relacionadas con los documentos que han seleccionado.
* Para cualquier mensaje del usuario que no esté relacionado con el análisis financiero, rechaza respetuosamente responder y sugiere que el usuario haga una pregunta relevante.
* Si tus tools no pueden encontrar una respuesta, debes decir que no has encontrado una respuesta pero aún así transmitir cualquier información útil que las tools hayan encontrado.
* No hagas preguntas aclaratorias, simplemente devuelve la respuesta.

Las tools a tu disposición tienen acceso a los siguientes documentos SEC que el usuario ha seleccionado para discutir contigo:
- Apple Inc (APPL) FORM 10K 2022
- Tesla Inc (TSLA) FORM 10K 2022

La fecha actual es: 2024-01-28
  1. ¡Guarda el Chatflow y empieza a hacer preguntas!

  1. Continúa con Tesla:

  1. Ahora podemos hacer preguntas sobre cualquier documento que hayamos insertado previamente en la base de datos vectorial sin "hard-coding" del filtrado de metadata usando tools + agent.

Metadata Retriever

Con el enfoque de Tool Agent, el usuario tiene que crear múltiples retriever tools para recuperar documentos de diferentes fuentes. Esto podría ser un problema si hay un gran número de fuentes de documentos con diferentes metadata. Usando el ejemplo anterior con solo Apple y Tesla, potencialmente podríamos expandirnos a otras compañías como Disney, Amazon, etc. Sería una tarea tediosa crear una retriever tool para cada compañía.

Aquí es donde entra en juego Metadata Retriever. La idea es que el LLM extraiga el metadata de la pregunta del usuario, y luego lo use como filtro al buscar en las bases de datos vectoriales.

Por ejemplo, si un usuario está haciendo preguntas relacionadas con Apple, un filtro de metadata {source: apple} se aplicará automáticamente en la búsqueda de la base de datos vectorial.

En este escenario, podemos tener una sola retriever tool, y colocar el Metadata Retriever entre la base de datos vectorial y la retriever tool.

XML Agent

Para algunos LLMs, las capacidades de function callings no están soportadas. En este caso, podemos usar XML Agent para indicar al LLM en un formato/sintaxis más estructurado, con el objetivo de usar las tools proporcionadas.

Tiene el prompt subyacente:

Eres un asistente útil. Ayuda al usuario a responder cualquier pregunta.

Tienes acceso a las siguientes tools:

{tools}

Para usar una tool, puedes usar las etiquetas <tool></tool> y <tool_input></tool_input>. Luego recibirás una respuesta en forma de <observation></observation>
Por ejemplo, si tienes una tool llamada 'search' que podría ejecutar una búsqueda en Google, para buscar el clima en SF responderías:

<tool>search</tool><tool_input>weather in SF</tool_input>
<observation>64 degrees</observation>

Cuando hayas terminado, responde con una respuesta final entre <final_answer></final_answer>. Por ejemplo:

<final_answer>El clima en SF es de 64 grados</final_answer>

¡Comienza!

Conversación Anterior:
{chat_history}

Pregunta: {input}
{agent_scratchpad}

Conclusión

Hemos cubierto el uso de Conversational Retrieval QA Chain y sus limitaciones al consultar múltiples documentos. Y pudimos superar el problema usando OpenAI Function Agent/XML Agent + Tools. Puedes encontrar las plantillas a continuación:

Vamos a usar , y subir los archivos respectivos:

En la podrás ver los nuevos vectores que se agregaron.

Podemos resolver el problema del filtro de metadata "hard-coded" usando .

Crea un con el siguiente nombre y descripción:

PDF File Loader
consola de Pinecone
Tool Agent
Retriever Tool
QnA con Web Scraping
37KB
ToolAgent Chatflow.json
38KB
XMLAgent Chatflow.json