
Extracción de conocimiento obstinado y recuperación semántica para aplicaciones de Gen AI.
Explore los documentos »
Informe de error · Función de solicitud
Dewy lo ayuda a construir agentes de IA y aplicaciones de RAG al administrar la extracción de conocimiento de sus documentos e implementar la búsqueda semántica sobre el contenido extraído. Cargue sus documentos y húmedo se encarga de analizar, fumar, resumir e indexar para la recuperación. Dewy se basa en las lecciones de poner aplicaciones reales de Gen AI en la producción para que pueda concentrarse en obtener. hecho, en lugar de comparar bases de datos vectoriales y construir infraestructura de extracción de datos.
A continuación se muestra la arquitectura típica de un agente de IA que realiza trapo. Hocy maneja todas las piezas que se muestran en Brown para que pueda concentrarse en su aplicación: las piezas en verde.

(De vuelta a la cima)
Para obtener una copia local en ejecución, siga estos pasos.
(Opcional) Inicie una instancia pgvector para persistir sus datos
DeWy utiliza una base de datos vectorial para almacenar metadatos sobre los documentos que ha cargado, así como las integridades utilizadas para proporcionar resultados de búsqueda semánticos.
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 ya tiene una instancia de pgvector , puede crear una base de datos para rocío y configurar hojas usándola utilizando el DB Env VAR (ver más abajo).
Instalar rocío
pip install dewy
Esto instalará DeWy en su entorno local de Python.
Configurar Dewy. Dewy leerá Vars de un archivo .env si se proporciona. También puede configurarlos directamente en el entorno, por ejemplo, al configurar una instancia que se ejecuta en Docker / Kubernetes.
# ~/.env
ENVIRONMENT=LOCAL
DB=postgresql://...
OPENAI_API_KEY=...Enciende húmedo
dewyDewy incluye una consola de administración que puede usar para crear colecciones, cargar documentos y ejecutar consultas de prueba.
open http://localhost:8000/adminInstale la biblioteca de clientes API
npm install dewy-tsConéctese a una instancia de Dewy
import { Dewy } from 'dewy_ts' ;
const dewy = new Dewy ( )Agregar documentos
await dewy . kb . addDocument ( {
collection_id : 1 ,
url : “https : //arxiv.org/abs/2005.11401”,
} )Recuperar los fragmentos de documento para la solicitud de 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' } ] ]
} )Instale la biblioteca de clientes API
pip install dewy-clientConéctese a una instancia de Dewy
from dewy_client import Client
dewy = Client ( base_url = "http://localhost:8000" )Agregar documentos
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 ”,
))Recuperar los fragmentos de documento para la solicitud de 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
""" Consulte [ python-langchain.ipynb'](demos/python-langchain-notebook/python-langchain.ipynb) for an example using Dewy in LangChain, including an implementation of LangChain's respaldada por Dewy.
Dewy está bajo desarrollo activo. Esta es una descripción general de nuestra hoja de ruta actual, ¿por favor? problemas que son importantes para usted. No vea una función que mejore a Dewy para su aplicación: ¡cree una solicitud de función!
Las contribuciones son las que hacen que la comunidad de código abierto sea un lugar tan increíble para aprender, inspirar y crear. Cualquier contribución que haga es muy apreciada .
Si tiene una sugerencia que lo mejore, desembolse el repositorio y cree una solicitud de extracción. También puede simplemente abrir un problema con la etiqueta "Mejora". ¡No olvides darle una estrella al proyecto! ¡Gracias de nuevo!
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 si se proporciona. También puede configurarlos directamente en el entorno, por ejemplo, al configurar una instancia que se ejecuta en 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 dewyAlgunos códigos de esqueleto basado en las mejores prácticas de https://github.com/zhanymkanov/fastapi-best-practices.
Los siguientes comandos ejecutan pruebas y aplican la pelusa. Si estás en un poetry shell , puedes omitir la poetry run :
poetry run pytestpoetry run ruff check --fixpoetry run ruff formatpoetry run mypy dewyPara regenerar las bibliotecas de especificaciones y clientes de OpenAPI:
poetry poe extract-openapi
poetry poe update-client(De vuelta a la cima)
Lanzamientopyproject.toml para dewy b. dewy-client/pyproject.toml para dewy-client c. Versión API en dewy/config.py d. openapi.yaml y dewy-client ejecutando poe extract-openapi y poe update-client .dewy y dewy-client .(De vuelta a la cima)
Distribuido bajo la licencia Apache 2. Consulte LICENSE.txt para obtener más información.
(De vuelta a la cima)