Construcción de un motor de búsqueda distribuido de libros electrónicos de código abierto
(github.com/j2qk3b)Cómo construir un motor de búsqueda distribuido de libros electrónicos de código abierto
- Por recomendación de un amigo, descubrí un sitio web de búsqueda de libros electrónicos llamado Liber3 que usa nombres de dominio ENS.
- Liber3 creó un sitio web de búsqueda de libros electrónicos usando ENS e IPFS, pero no publicó el código fuente.
- Después de revisar la documentación y el conjunto de datos de Glitter, decidí implementar por mi cuenta una versión comunitaria de código abierto.
Inicialización del proyecto
- Se crea un nuevo proyecto y se instala el SDK de Glitter para poder conectarse fácilmente a la red de Glitter y obtener los metadatos de los libros electrónicos.
Conexión a la red
- Se crea un cliente que puede interactuar con la red de Glitter.
- A través del SDK de Glitter, se inicializa una instancia de
LCDClienty se configuran los parámetros relacionados.
Construcción de la función de búsqueda
- Se define una función de búsqueda que toma las palabras clave de la consulta del usuario, construye una sentencia de consulta y la envía a la red de Glitter.
Visualización de los resultados de búsqueda
- Después de construir la función de búsqueda, se diseña una interfaz que muestra la información básica de los libros electrónicos y ofrece elementos interactivos para que el usuario pueda explorar y seleccionar libros fácilmente.
- Con estos cuatro pasos, se puede construir un motor de búsqueda de libros electrónicos que ofrece a los usuarios una plataforma eficiente y conveniente para buscar recursos de libros electrónicos.
- Si se publica la versión compilada del sitio web en la red IPFS, se puede tener un motor de búsqueda distribuido de libros electrónicos accesible a través de una puerta de enlace de IPFS.
- El código fuente completo puede consultarse en este repositorio.
Opinión de GN⁺
- Este artículo puede resultar interesante para las personas interesadas en la tecnología, ya que explica cómo construir un motor de búsqueda de libros electrónicos aprovechando el código abierto y las tecnologías distribuidas.
- El uso de bases de datos distribuidas e IPFS presenta una nueva forma de almacenar y recuperar datos sin depender de servidores centralizados, con el potencial de mejorar la persistencia y accesibilidad de los datos.
- Al adoptar esta tecnología, es necesario considerar la estabilidad de la red, la velocidad de búsqueda y la experiencia del usuario, y es importante comprender sus ventajas y desventajas en comparación con los motores de búsqueda centralizados existentes.
- Otros proyectos que ofrecen funciones similares incluyen Project Gutenberg o Google Books API, pero estos no utilizan tecnología distribuida.
- El uso de tecnología distribuida puede devolver la propiedad y el control de los datos a los usuarios, al mismo tiempo que fortalece la resistencia a la censura del contenido.
1 comentarios
Opiniones en Hacker News
Hace mucho quería probar algo similar con datasets y modelos de IA sobre IPFS.
No sé cuál será el futuro de IPFS, pero me gustaría que el núcleo de una infraestructura P2P para compartir datos, que permita a individuos resolver problemas con poco hardware al trabajar con datasets grandes, se vuelva más accesible.
https://github.com/JakeKalstad/IPFSPytorchDataset
https://github.com/JakeKalstad/load_ipfs_pytorch_model
Por el título pensé que hacía búsqueda de texto completo y me emocioné mucho.
Zlib y Google Books ya lo hacen, pero una versión open source donde todos puedan contribuir y que además dé acceso al texto completo sería un proyecto genial.
Ej.: https://openlibrary.org/search/inside?q=%22institutional+thi...
Es open source y siempre busca colaboradores. Creo que en especial agradecerían ayuda para mejorar la búsqueda.
https://github.com/internetarchive/openlibrary/
El problema es que muchos libros son PDFs escaneados y no tienen texto original; OcrMyPdf los procesa bastante bien, pero consume mucha CPU.
Si solo buscas títulos de libros o autores, ya hay montones de buscadores.
Lo que falta es un índice de búsqueda del contenido de los ebooks, y en la era de la IA generativa pronto será enormemente importante.
En HN alguien dijo que se podrían indexar los textos completos de millones de libros con una sola laptop, mientras otros dicen que el alcance es casi imposible. Me pregunto si existe algún proyecto que haga esto.
Por ahora solo indexa tu propio contenido, pero más adelante me gustaría agregar un modo para compartir colecciones y que otras personas puedan descubrir con búsqueda semántica ideas relacionadas que otros encontraron en libros. La forma en que funciona actualmente se puede ver en el open source.
[1] https://emdash.ai/
[2] https://github.com/dmotz/emdash
Recuerdo que Google documentó algo de esto en sus inicios: el índice de búsqueda devuelve metadatos relevantes que coinciden con una consulta específica. El espacio de consultas se basa principalmente en palabras clave crudas y tuplas, y si no recuerdo mal en n-gramas de 2 a 3 palabras; estos últimos deben cumplir una condición de frecuencia mínima. Las búsquedas largas se pueden componer a partir de n-gramas más cortos.
El vocabulario avanzado de un hablante nativo de inglés suele rondar las 40 mil palabras, e incluso un diccionario grande que incluya palabras antiguas podría tener menos de 250 mil.
Mapear el vocabulario a las obras que citan esas palabras es relativamente simple. Los n-gramas tienen una explosión combinatoria, pero aun así el espacio es bastante acotado, y ya tenemos más de 25 años de experiencia indexando documentos a escala web.
Creo que una laptop podría crear un índice utilizable, hasta cierto punto, para millones de libros, pero para un índice más integral, especialmente un índice de ranking del espacio de búsqueda, probablemente se necesite un sistema más grande. Tal vez ese sea el desafío más grande.
En un trabajo reciente estuve lidiando con LLMs locales, y aunque la cuantización ha avanzado mucho últimamente, hacer este tipo de tareas en una ThinkPad sigue quedando muy por detrás de alquilar por unas horas un VPS con varias 4090/H100.
En resumen, el mayor problema es que la mayoría de los modelos LLM locales no tienen una ventana de contexto muy grande, así que incluso textos grandes como una novela corta de Vonnegut les cuestan. Lo probé resumiendo issues de GitHub, y aun con una ventana de contexto de 16k tokens a veces sufre cuando hay muchos comentarios.
Claro que alguien más inteligente que yo quizá podría hacerlo correr incluso en una Raspberry Pi.
No tengo pruebas, es solo una suposición, así que me gustaría saber más.
¿Podrías explicar en detalle cómo se llena el índice de búsqueda y cuáles son los límites de memoria que esperan?
Genial. ¿Se podría usar también para búsqueda de torrents?
Algo así como correrlo junto con torrents web con streaming de video y un buscador descentralizado.
También planeo hacer una versión open source.
Aquí hay una versión open source para búsqueda de torrents que usa la misma tecnología.
Me pregunto si esto es un buscador real o solo un frontend que genera consultas
select from.No entiendo de qué diablos están hablando.
Aparecen frases como “me recomendaron Liber3, usa nombres de dominio ENS, funciona sobre ENS e IPFS, parece usar Glitter y es un servicio hecho con Tendermint”, y suena como una señal alienígena en un idioma de otra galaxia.
También intenté probar eso llamado Liber3, pero haga lo que haga solo aparece “Oops! Something went wrong. Please refresh or try again later”. ¿De qué se trata todo esto?
IPFS es InterPlanetary File System, algo más cercano a un almacenamiento de objetos distribuido, como un S3 P2P inmutable.
Glitter me suena familiar, pero no se me viene a la mente de inmediato.
Tendermint es un motor de consenso para blockchain y forma parte de una cadena de herramientas que, junto con el protocolo Inter-Blockchain Communication (IBC) y Cosmos SDK, intenta habilitar la interoperabilidad entre blockchains.
El ecosistema blockchain es realmente un pequeño mundo en sí mismo. No digo que sea excluyente, pero sí es bastante de nicho, así que si no lo buscas activamente casi no te lo cruzas.
Dicho sea de paso, vale la pena echarle un vistazo a IPFS si te interesan las bases de datos o los sistemas descentralizados sin confianza, incluso si eres escéptico de blockchain. Están haciendo trabajo bastante interesante por dentro, y el equipo no se subió al ambiente de fiebre del oro como casi todos los proyectos blockchain.
Puedes verlo como una guía de implementación para crear un buscador open source de ebooks. Claro que incluso esa descripción conserva algo de jerga, pero no al nivel de enumerar una lista de nombres de librerías específicas.
La mayor parte del artículo son detalles de implementación, con enlaces útiles.
Y luego uno se da cuenta de que esto existe desde hace casi 15 años y se llamaba libgen.rs.