Un motor de búsqueda de IA de código abierto básico, modelado después de la perplejidad. Si no está familiarizado con una plataforma de respuesta de pregunta con IA, usan un modelo de idioma grande como ChatGPT para responder a sus preguntas, pero mejora en ChatGPT en que se obtiene resultados de búsqueda precisos y en tiempo real para complementar la respuesta (por lo que no hay "corte de conocimiento"). Y enumera las citas dentro de la respuesta en sí, lo que genera confianza, no es alucinante y le permite investigar temas más a fondo.
search.php (Busque "[Lléname]")El principal desafío con LLM como ChatGPT es que tienen límites de conocimiento (y ocasionalmente tienden a alucinar). Es porque están entrenados en datos hasta una fecha específica (por ejemplo, septiembre de 2021). Entonces, si desea una respuesta a una pregunta actualizada o simplemente desea investigar un tema en detalle, deberá aumentar la respuesta con fuentes relevantes. Esta técnica se conoce como trapo (generación de recuperación aumentada). Y en nuestro caso, simplemente podemos proporcionar la información actualizada de LLM de motores de búsqueda como Google o Bing.
Para construir esto usted mismo, querrá registrarse primero en una clave API de Bing, Google (a través de Serper), Brave u otros. Bing, Brave y Serper ofrecen un uso gratuito para comenzar.
En search.php , coloque su clave API cuando corresponda (busque "[Lléname]"). Para este ejemplo, tengo código para Brave y Google a través de Serper.
Aquí, deberá registrarse en una clave API de un proveedor de LLM. Hay muchos proveedores para elegir en este momento. Por ejemplo, hay OpenAi, Anthrope, AnyScale, Groq, Cloudflare, Perplexity, Lepton o los grandes jugadores como AWS, Azure o Google Cloud. He usado muchos de estos con éxito y ofrecen un subconjunto de modelos actuales y populares de código abierto y de código abierto. Y cada modelo tiene fortalezas únicas, diferentes costos y diferentes velocidades. Por ejemplo, GPT-4 es muy preciso pero costoso y lento. En caso de duda, recomendaría usar ChatGPT-3.5-Turbo desde Operai. Es lo suficientemente bueno, lo suficientemente barato y lo suficientemente rápido como para probar esto.
Afortunadamente, la mayoría de estos proveedores de servicio LLM son compatibles con el formato API de OpenAI, por lo que cambiar a otro proveedor / modelo es solo un trabajo mínimo (¡o simplemente solicite a un chatbot que escriba el código!).
En search.php , coloque sus claves API cuando corresponda (busque "[Lléname]"). Para este ejemplo, estoy usando OpenAI (para chatgpt-3.5-turbo / gpt-4) y groq (para mixtral-8b7b). Entonces, para mantener su trabajo mínimo, solo busque las llaves para uno o ambos de ellos.
Cuando desee hacer una pregunta a una LLM, puede proporcionar mucho contexto adicional. Cada modelo tiene su propio límite único y algunos de ellos son muy grandes. Para GPT-4-TURBO, puede pasar la totalidad del primer libro de Harry Potter con su pregunta. El súper poderoso Gemini 1.5 de Google puede soportar un tamaño de contexto de más de un millón de tokens. ¡Eso es suficiente para pasar la totalidad de la serie de 7 libros Harry Potter!
Afortunadamente, pasar los fragmentos de 8-10 resultados de búsqueda es mucho más pequeño, lo que le permite usar muchos de los modelos más rápidos (y mucho más baratos) como GPT-3.5-TURBO o Mistral-7B.
En mi experiencia, transmitir la pregunta del usuario, el mensaje de solicitud personalizado y los fragmentos de resultados de búsqueda generalmente tienen menos de 1k tokens. Esto está bien incluso bajo los límites del modelo más básico, por lo que esto no debería ser un problema.
search.php tiene el mensaje de muestra que he estado jugando contigo. Hat-tip a la gente de Lepton AI que de origen abierto un proyecto similar que me ayudó a refinar este aviso.
Una de las buenas características de la perplejidad es cómo sugieren preguntas de seguimiento. Afortunadamente, esto es fácil de replicar.
Para hacer esto, puede hacer una segunda llamada a su LLM (en paralelo) haciendo preguntas relacionadas. Y no olvides pasar esas citas en el contexto nuevamente.
O bien, puede intentar construir un aviso para que el LLM responda la pregunta y se les ocurra preguntas relacionadas. Esto guarda una llamada API y algunas fichas, pero es un poco desafiante que estos LLM siempre respondan en un formato consistente y repetible.
Para que esto sea un ejemplo completo, necesitamos una interfaz de usuario utilizable. Mantuve la interfaz de usuario lo más simple posible y todo está en index.html . Estoy usando Bootstrap, jQuery y algunos CSS / JavaScript básicos, Markdown y un marcador de sintaxis JS para que esto suceda.
Para mejorar la experiencia, la UI hace lo siguiente:
Para explorar un ejemplo de funcionamiento, consulte https://yaddleai.com. Es principalmente el mismo código, aunque agregué una segunda llamada de búsqueda en paralelo para obtener imágenes, escribí una página separada para obtener las últimas noticias y algunas otras mejoras menores.