txtai est une base de données d'intégration tout-en-un pour les workflows de recherche sémantique, d'orchestration LLM et de modèles de langage.
Les bases de données Embeddings peuvent éventuellement créer un réseau de graphiques aux côtés des vecteurs stockés. Le graphique déduit automatiquement les relations du contenu à l'aide des plongements vectoriels calculés. Cela fournit un moyen supplémentaire d’explorer et d’analyser le contenu.
txtai 8.0 a été récemment publié et a ajouté la possibilité d'exécuter des agents. Les agents créent automatiquement des flux de travail pour répondre aux demandes des utilisateurs à multiples facettes.
Cet article montrera comment utiliser ces concepts avec l'ensemble de données Hugging Face Posts. Si vous n'êtes pas familier avec les graphes sémantiques, le parcours de graphes et les agents dans txtai, consultez les articles ci-dessous avant de continuer.
Articles à revoir :
Installertxtaiet toutes les dépendances.
pip install txtai[graph] ensembles de données autoawqHugging Face Posts est un site de microblog. Il comptait plus de 2 000 publications uniques en novembre 2024. La section suivante définit les méthodes permettant de générer des enregistrements à partir de cet ensemble de données.
De plus, il charge un LLM pour déduire les titres de chaque article.
from datasets import load_dataset from txtai import LLM llm = LLM("hugging-quants/Meta-Llama-3.1-8B-Instruct-AWQ-INT4") def title(text): prompt = f""" Créer un sujet simple et concis pour le texte suivant. Renvoie uniquement le nom du sujet : {text} """ return llm([{"role": "user", "content": prompt}], maxlength=2048) def hfposts() : ds = load_dataset("maxiw/hf-posts", split="train") pour la ligne dans ds : rendement { "id": title(row["rawContent"]), "text ": row["rawContent"], "author": row["author"]["name"], "date": row["publishedAt"], "url": f"https://hf.co{row['url']}", "reactions": sum(x["count"] pour x dans la ligne["reactions"]), "views": row["totalUniqueImpressions "], "comments": row["numComments"] }Maintenant, construisons un index Embeddings. Nous stockerons des vecteurs, du contenu et construirons un réseau de graphiques. Le réseau graphique construit automatiquement des relations entre les enregistrements en utilisant la similarité vectorielle.
depuis tqdm import tqdm depuis txtai import Embeddings embeddings = Embeddings( autoid="uuid5", path="intfloat/e5-large", instructions={"query": "query: ", "data": "passage: "}, content=True, graph={"approximate": False, "minscore": 0.7}, ) embeddings.index(tqdm(hfposts()))Avec un GPU moderne, cette étape ne devrait pas prendre longtemps. La partie la plus longue du processus consiste à exécuter plus de 2 000 invites LLM pour générer des titres. Sans cela, la création de l’index d’intégration ne prendrait que quelques secondes.
Si vous souhaitez ignorer cette étape, vous pouvez à la place charger un index d'intégration précalculé à partir du Hugging Face Hub comme suit.
embeddings = Embeddings() embeddings.load(provider="huggingface-hub", conteneur="neuml/txtai-hfposts")Lançons un exemple de recherche pour vérifier que l'index fonctionne.
embeddings.search("transformateurs")[{'id' : 'AI Music Generation', 'text' : 'J'adore ce nouvel espace construit par @enzostvs + @Xenova pour Transformers.js : générez votre propre musique IA (génération dans le navigateur) avec AI Jukebox \n\ nhttps://huggingfac...
[Courte citation de 8% de l'article original]