Hemos corrido un script para descargar la documentación de Hugging Face desde Github, esto nos ha generado una base de datos gigante para investigar información. Lo siguiente será cargarla a través de LangChain y su formato de Documents. El fin de todo esto será tener un índice funcional con Chroma que podamos usar para hacer prompts mediante algún modelo de lenguaje.
Crearemos un archivo ai_conversation.py dentro de la carpeta hashira, luego crearemos un entrypoint.
if __name__ == '__main__':
main()
importaremos de LangChain→text_splitter el RecursiveCharacterTextSplitter, además, importaremos 2 funciones desde utils: DocsJSONLLoader y get_file_path.
from langchain.text_splitter import RecursiveCharacterTextSplitter
from utils import DocsJSONLLoader, get_file_path
Crearemos la función main, esta obtendrá el filepath de nuestra base de datos JSONL y cargaremos los documentos con la función load_documents que crearemos a continuación.
def main():
path = get_file_path()
documents = load_documents(path)
La función load_documents cargará a memoria el archivo JSONL en formato List[Document], luego crearemos un text splitter con una capacidad de 1600 caracteres y un chunk overlap de 160 (10% del tamaño original), finalmente retornaremos el nuevo split de documentos.
def load_documents(file_path : str):
loader = DocsJSONLLoader(file_path)
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size = 1600,
length_function = len,
chunk_overlap = 160,
)
return text_splitter.split_documents(data)