Este es un proyecto de inicio básico para construir con las siguientes herramientas y API:
Cuando comencé a sumergirme en todo esto, sentí que mientras entendía algunas de las piezas individuales, era difícil reconstruir todo en un proyecto cohesivo. Espero que este proyecto sea útil para cualquiera que busque construir con esta pila y solo necesite algo para comenzar.
Estamos creando una aplicación que toma texto (archivos de texto), los incrusta en vectores, los almacena en pinecone y permite la búsqueda semántica de los datos.
Para cualquiera que se pregunte qué es la búsqueda semántica, aquí hay una visión general (tomada directamente de ChatGPT4):
La búsqueda semántica se refiere a un enfoque de búsqueda que comprende la intención del usuario y el significado contextual de las consultas de búsqueda, en lugar de simplemente hacer coincidir las palabras clave.
Utiliza el procesamiento del lenguaje natural y el aprendizaje automático para interpretar la semántica o significado detrás de consultas. Esto da como resultado resultados de búsqueda más precisos y relevantes. La búsqueda semántica puede considerar la intención del usuario, el contexto de consulta, el reconocimiento del sinónimo y la comprensión del lenguaje natural. Sus aplicaciones van desde motores de búsqueda web hasta sistemas de recomendaciones personalizados.
En esta sección lo guiaré a través de cómo implementar y ejecutar esta aplicación.
Para ejecutar esta aplicación, necesita lo siguiente:
Para ejecutar la aplicación localmente, siga estos pasos:
git clone [email protected]:dabit3/semantic-search-nextjs-pinecone-langchain-chatgpt.gitCambiar en el directorio e instalar las dependencias utilizando NPM o hilo
Copie .example.env.local a un nuevo archivo llamado .env.local y actualice con sus claves y entorno API.
Asegúrese de que su entorno sea un entorno real que se le otorgue Pinecone, como us-west4-gcp-free
(Opcional): agregue su propio texto personalizado o archivos de Markdown en la carpeta /documents .
Ejecute la aplicación:
npm run dev Al crear los incrustaciones y el índice, puede tomar hasta 2-4 minutos para que el índice se inicialice completamente. Hay una función SetTimeOut de 180 segundos en los utils que espera a que se cree el índice.
Si la inicialización lleva más tiempo, entonces fallará la primera vez que intente crear los incrustaciones. Si esto sucede, visite la consola Pinecone para mirar y esperar a que el estado de su índice se cree para finalizar, luego ejecute la función nuevamente.
Los datos de la aplicación preconfigurados son sobre la documentación del desarrollador del protocolo de lente, por lo que solo comprenderá preguntas al respecto a menos que lo reemplace con sus propios datos. Aquí hay un par de preguntas que puede hacerlo con los datos predeterminados.
La base de este proyecto fue guiada por este tutorial de nodo.js, con cierta reestructuración y portada a Next.js. ¡También puedes seguirlos aquí en Twitter!
Recomiendo consultar el cargador de repositorio GPT, que facilita la convertir cualquier repositorio de GitHub en un formato de texto, preservando la estructura de los archivos y el contenido de archivos, lo que facilita la cortación y guardar en Pinecone usando mi base de código.