Una guía paso a paso para construir una búsqueda semántica rápida y un motor de control de calidad de trapo en datos con liquidación web utilizando embebidos de IA juntos, recuperación de faiss y langchain

En este tutorial, nos inclinamos mucho Juntos aiEl creciente ecosistema para mostrar qué tan rápido podemos convertir el texto no estructurado en un servicio de respuesta de pregunta que cita sus fuentes. Rascaremos un puñado de páginas web en vivo, las cortaremos en trozos coherentes y alimentaremos esos trozos al modelo de incrustación de retrieval de referencia de CompuTer/M2-Bert-80M-8K. Esos vectores aterrizan en un índice FAISS para la búsqueda de similitud de milisegundos, después de lo cual un modelo de chattogether liviano redacta las respuestas que permanecen basadas en los pasajes recuperados. Debido a que juntos, la IA maneja las integridades y chatea detrás de una sola clave de API, evitamos hacer malabarismos con múltiples proveedores, cuotas o dialectos SDK.

!pip -q install --upgrade langchain-core langchain-community langchain-together 
faiss-cpu tiktoken beautifulsoup4 html2text

Este comando tranquilo (-q) pip actualiza e instala todo el colab TRAPO necesidades. Trae las bibliotecas de Langchain Core más la integración AI juntas, FAISS para la búsqueda vectorial, el manejo de tokens con Tiktoken y el análisis HTML liviano a través de BeautifulSoup4 y HTML2Text, asegurando que el cuaderno se ejecute de extremo a extremo sin una configuración adicional.

import os, getpass, warnings, textwrap, json
if "TOGETHER_API_KEY" not in os.environ:
    os.environ["TOGETHER_API_KEY"] = getpass.getpass("🔑 Enter your Together API key: ")

Verificamos si la variable de entorno juntas_api_key ya está configurada; Si no, nos solicita de forma segura la clave con GetPass y la almacena en OS.environ. El resto del cuaderno puede llamar a la API de AI sin secretos de codificación dura o exponerlos en texto plano capturando las credenciales una vez por tiempo de ejecución.

from langchain_community.document_loaders import WebBaseLoader
URLS = [
    "https://python.langchain.com/docs/integrations/text_embedding/together/",
    "https://api.together.xyz/",
    "https://together.ai/blog"  
]
raw_docs = WebBaseLoader(URLS).load()

WebBaseloader obtiene cada URL, se tira a Boilerplate y devuelve objetos de documento Langchain que contienen el texto de la página limpia más los metadatos. Al aprobar una lista de enlaces relacionados con juntos, recopilamos inmediatamente la documentación en vivo y el contenido de blog que luego será fragmentado e integrado para la búsqueda semántica.

from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
docs = splitter.split_documents(raw_docs)


print(f"Loaded {len(raw_docs)} pages → {len(docs)} chunks after splitting.")

RecursIvecharacterTextSplitter corta cada página obtenida en segmentos de ~ 800 caracteres con una superposición de 100 caracteres para que las pistas contextuales no se pierdan en los límites de los fragmentos. Los documentos de la lista resultante contienen estos objetos de documentos Langchain del tamaño de un bocado, y la impresión muestra cuántos fragmentos se produjeron a partir de las páginas originales, preparación esencial para la incrustación de alta calidad.

from langchain_together.embeddings import TogetherEmbeddings
embeddings = TogetherEmbeddings(
    model="togethercomputer/m2-bert-80M-8k-retrieval"  
)
from langchain_community.vectorstores import FAISS
vector_store = FAISS.from_documents(docs, embeddings)

Aquí creamos instanciar el modelo de recuperación de la cadena Langchain de 80 parámetros M de 80 paramétricos de AI, como un embendido langchain, luego alimentamos cada texto con él mientras FAISS.FROM_DOCUMENTS construye un índice de vectores en memoria. La tienda vectorial resultante admite búsquedas de coseno a nivel de milisegundos, convirtiendo nuestras páginas raspadas en una base de datos semántica de búsqueda.

from langchain_together.chat_models import ChatTogether
llm = ChatTogether(
    model="mistralai/Mistral-7B-Instruct-v0.3",        
    temperature=0.2,
    max_tokens=512,
)

Chattegether envuelve un modelo de chat ajustado en AI juntos, Mistral-7B-Instruct-V0.3 para ser utilizado como cualquier otro Langchain LLM. Una temperatura baja de 0.2 mantiene las respuestas castigadas y repetibles, mientras que max_tokens = 512 deja espacio para respuestas detalladas de varios párrafos sin costos fugitivos.

from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vector_store.as_retriever(search_kwargs={"k": 4}),
    return_source_documents=True,
)

La recuperación de la recuperación une las piezas: toma nuestro Faiss Retriever (devolviendo los 4 trozos similares) y alimenta esos fragmentos en el LLM usando la plantilla de inmediato de “Stuff”. Configuración de return_source_documents = Verdadero significa que cada respuesta volverá con los pasajes exactos en los que se basó, dándonos instantáneos, Q-y-A, listos para las citas.

QUESTION = "How do I use TogetherEmbeddings inside LangChain, and what model name should I pass?"
result = qa_chain(QUESTION)


print("n🤖 Answer:n", textwrap.fill(result['result'], 100))
print("n📄 Sources:")
for doc in result['source_documents']:
    print(" •", doc.metadata['source'])

Finalmente, enviamos una consulta en el lenguaje natural a través de QA_Chain, que recupera los cuatro trozos más relevantes, los alimenta al modelo Chattegether y devuelve una respuesta concisa. Luego imprime la respuesta formateada, seguida de una lista de URL de origen, dándonos tanto la explicación sintetizada como las citas transparentes de una sola vez.

Salida de la celda final

En conclusión, en aproximadamente cincuenta líneas de código, construimos un bucle de trapo completo alimentado de extremo a extremo por juntos: ingerir, incrustar, almacenar, recuperar y conversar. El enfoque es deliberadamente modular, intercambia FAISS para el croma, intercambia el incrustador de 80 parámetros M para el modelo multilingüe más grande de Together, o conecta a un relevo sin tocar el resto de la tubería. Lo que permanece constante es la conveniencia de un backend de IA unificado juntos: incrustaciones rápidas y asequibles, modelos de chat sintonizados para la instrucción siguiente y un nivel libre generoso que hace que la experimentación sea sin dolor. Use esta plantilla para arrancar un asistente de conocimiento interno, un bot de documentación para los clientes o un asistente de investigación personal.


Mira el Cuaderno de colab aquí. Además, siéntete libre de seguirnos Gorjeo Y no olvides unirte a nuestro 90k+ ml de subreddit.


Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.