
Extraction des connaissances et récupération sémantique pour les applications Gen AI.
Explorez les documents »
RAPPORT BUG · Fonction de demande
Dewy vous aide à créer des agents d'IA et des applications de chiffon en gérant l'extraction des connaissances de vos documents et en mettant en œuvre la recherche sémantique sur le contenu extrait. Chargez vos documents et la rosée s'occupe de l'analyse, de la chasse, du résumé et de l'indexation pour la récupération. Dewy s'appuie sur les leçons de la mise en production d'applications de véritables AI afin que vous puissiez vous concentrer sur l'obtention? fait, plutôt que de comparer les bases de données vectorielles et de créer une infrastructure d'extraction de données.
Vous trouverez ci-dessous l'architecture typique d'un agent d'IA effectuant un chiffon. Dewy gère toutes les pièces montrées en marron afin que vous puissiez vous concentrer sur votre application - les pièces en vert.

(retour en haut)
Pour obtenir une copie locale, suivez ces étapes.
(Facultatif) Démarrez une instance pgvector pour persister vos données
Dewy utilise une base de données vectorielle pour stocker des métadonnées sur les documents que vous avez chargés ainsi que les intégres utilisés pour fournir des résultats de recherche sémantique.
docker run -d
-p 5432:5432
-e POSTGRES_DB=dewydb
-e POSTGRES_USER=dewydbuser
-e POSTGRES_PASSWORD=dewydbpwd
-e POSTGRES_HOST_AUTH_METHOD=trust
ankane/pgvector Si vous avez déjà une instance de pgvector , vous pouvez créer une base de données pour Dewy et configurer Dewy Utilisez-le à l'aide du DB Env Var (voir ci-dessous).
Installer Dewy
pip install dewy
Cela installera Dewy dans votre environnement Python local.
Configurez Dewy. Dewy lira Env Vars à partir d'un fichier .env s'il est fourni. Vous pouvez également les définir directement dans l'environnement, par exemple lors de la configuration d'une instance exécutée dans Docker / Kubernetes.
# ~/.env
ENVIRONMENT=LOCAL
DB=postgresql://...
OPENAI_API_KEY=...Tirez la rosée
dewyDewy comprend une console d'administration que vous pouvez utiliser pour créer des collections, charger des documents et exécuter les requêtes de test.
open http://localhost:8000/adminInstallez la bibliothèque client API
npm install dewy-tsConnectez-vous à une instance de rosée
import { Dewy } from 'dewy_ts' ;
const dewy = new Dewy ( )Ajouter des documents
await dewy . kb . addDocument ( {
collection_id : 1 ,
url : “https : //arxiv.org/abs/2005.11401”,
} )Récupérer des morceaux de document pour l'invitation LLM
const context = await dewy . kb . retrieveChunks ( {
collection_id : 1 ,
query : "tell me about RAG" ,
n : 10 ,
} ) ;
// Minimal prompt example
const prompt = [
{
role : 'system' ,
content : `You are a helpful assistant.
You will take into account any CONTEXT BLOCK that is provided in a conversation.
START CONTEXT BLOCK
${ context . results . map ( ( c : any ) => c . chunk . text ) . join ( "n" ) }
END OF CONTEXT BLOCK
` ,
} ,
]
// Using OpenAI to generate responses
const response = await openai . chat . completions . create ( {
model : 'gpt-3.5-turbo' ,
stream : true ,
messages : [ ... prompt , [ { role : 'user' : content : 'Tell me about RAG' } ] ]
} )Installez la bibliothèque client API
pip install dewy-clientConnectez-vous à une instance de rosée
from dewy_client import Client
dewy = Client ( base_url = "http://localhost:8000" )Ajouter des documents
from dewy_client . api . kb import add_document
from dewy_client . models import AddDocumentRequest
await add_document . asyncio ( client = dewy , body = AddDocumentRequest (
collection_id = 1 ,
url = “ https : // arxiv . org / abs / 2005.11401 ”,
))Récupérer des morceaux de document pour l'invitation LLM
from dewy_client . api . kb import retrieve_chunks
from dewy_client . modles import RetrieveRequest
chunks = await retrieve_chunks . asyncio ( client = dewy , body = RetrieveRequest (
collection_id = 1 ,
query = "tell me about RAG" ,
n = 10 ,
))
# Minimal prompt example
prompt = f"""
You will take into account any CONTEXT BLOCK that is provided in a conversation.
START CONTEXT BLOCK
{ " n " . join ([ chunk . text for chunk in chunks . text_chunks ]) }
END OF CONTEXT BLOCK
""" Voir [ python-langchain.ipynb'](demos/python-langchain-notebook/python-langchain.ipynb) for an example using Dewy in LangChain, including an implementation of LangChain's soutenu par Dewy.
Dewy est en cours de développement actif. Ceci est un aperçu de notre feuille de route actuelle - s'il vous plaît? des problèmes qui sont importants pour vous. Ne voyez pas une fonctionnalité qui améliorerait Dewy pour votre application - créez une demande de fonctionnalité!
Les contributions font de la communauté open source un endroit incroyable pour apprendre, inspirer et créer. Toutes les contributions que vous faites sont grandement appréciées .
Si vous avez une suggestion qui améliorerait cela, veuillez débarquer le dépôt et créer une demande de traction. Vous pouvez également ouvrir simplement un problème avec la balise "amélioration". N'oubliez pas de donner une étoile au projet! Merci encore!
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature )git clone https://github.com/DewyKB/dewy.gitpoetry install.env s'il est fourni. Vous pouvez également les définir directement dans l'environnement, par exemple lors de la configuration d'une instance exécutée dans Docker / Kubernetes. cat > .env << EOF
ENVIRONMENT=LOCAL
DB=postgresql://...
OPENAI_API_KEY=...
EOF cd frontend && npm install && npm run build cd dewy-client && poetry installpoetry run dewyUn code squelette basé sur les meilleures pratiques de https://github.com/zhanymkanov/fastapi-best-pactices.
Les commandes suivantes exécutent des tests et appliquent la lie. Si vous êtes dans un poetry shell , vous pouvez omettre la poetry run :
poetry run pytestpoetry run ruff check --fixpoetry run ruff formatpoetry run mypy dewyPour régénérer les bibliothèques OpenAPI Spec et Client:
poetry poe extract-openapi
poetry poe update-client(retour en haut)
Libérationpyproject.toml pour dewy b. dewy-client/pyproject.toml pour dewy-client c. Version API dans dewy/config.py d. openapi.yaml et dewy-client en exécutant poe extract-openapi et poe update-client .dewy et dewy-client .(retour en haut)
Distribué sous la licence Apache 2. Voir LICENSE.txt pour plus d'informations.
(retour en haut)