lunes, 9 de marzo de 2026

proyecto completo ingesta de pdfs

 lista de acciones a seguir

1- PC necesita https://visualstudio.microsoft.com/es/downloads/ 


específicamente descargar Herramientas de compilación para Visual Studio 2026

2- en anaconda ejecutar los siguientes comandos:

conda create -n ia_proyectos python=3.10 -y

conda activate ia_proyectos

pip install llama-cpp-python

pip install langchain langchain-community langchain-huggingface langchain-chroma pypdf sentence-transformers flask


3- crear ingesta de datos:

import os

from langchain_community.document_loaders import PyPDFLoader

from langchain_text_splitters import RecursiveCharacterTextSplitter

from langchain_huggingface import HuggingFaceEmbeddings

from langchain_chroma import Chroma


def generar_base():

    path_pdfs = "./mis_documentos"

    path_db = "./db_vectorial"

    

    if not os.path.exists(path_pdfs): os.makedirs(path_pdfs)


    print("Cargando y fragmentando PDFs...")

    documentos = []

    # Fragmentos un poco más pequeños para facilitar el procesamiento en CPU

    text_splitter = RecursiveCharacterTextSplitter(chunk_size=700, chunk_overlap=100)


    for archivo in [f for f in os.listdir(path_pdfs) if f.endswith('.pdf')]:

        try:

            loader = PyPDFLoader(os.path.join(path_pdfs, archivo))

            documentos.extend(text_splitter.split_documents(loader.load()))

            print(f" -> {archivo} procesado.")

        except Exception as e:

            print(f"Error en {archivo}: {e}")


    print(f"\nGenerando vectores en '{path_db}' (Usando CPU)...")

    # Este modelo es excelente y muy ligero para CPU

    model_kwargs = {'device': 'cpu'}

    embeddings = HuggingFaceEmbeddings(

        model_name="sentence-transformers/all-MiniLM-L6-v2",

        model_kwargs=model_kwargs

    )

    

    Chroma.from_documents(

        documents=documentos,

        embedding=embeddings,

        persist_directory=path_db

    )

    print("\n¡ÉXITO! Base vectorial lista en disco.")


if __name__ == "__main__":

    generar_base()


4- realizar prueba a la ingesta de datos

from langchain_chroma import Chroma

from langchain_huggingface import HuggingFaceEmbeddings


def realizar_busqueda():

    path_db = "./db_vectorial"

    

    # Forzamos el uso de CPU para los embeddings

    model_kwargs = {'device': 'cpu'}

    embeddings = HuggingFaceEmbeddings(

        model_name="sentence-transformers/all-MiniLM-L6-v2",

        model_kwargs=model_kwargs

    )

    

    vector_db = Chroma(persist_directory=path_db, embedding_function=embeddings)

    

    while True:

        pregunta = input("\n🔎 Consulta (o 'salir'): ")

        if pregunta.lower() == 'salir': break

        

        # Buscamos los 3 fragmentos más relevantes

        resultados = vector_db.similarity_search_with_relevance_scores(pregunta, k=3)

        

        if not resultados:

            print("No se encontró información relacionada.")

            continue


        print("\nTOP 3 FRAGMENTOS ENCONTRADOS:")

        print("="*60)

        for i, (doc, score) in enumerate(resultados):

            print(f"FUENTE {i+1} | Relevancia: {round(score * 100, 2)}%")

            print(f"ARCHIVO: {doc.metadata.get('source')}")

            print(f"CONTENIDO: {doc.page_content[:400]}...")

            print("-" * 60)


if __name__ == "__main__":

    realizar_busqueda()


miércoles, 25 de febrero de 2026

reducir dirección en prompt - anaconda - cmd

 es muy común que las rutas largas en la terminal se vuelvan estorbosas. 

aca la solucion en PROMPT ANACONDA

antes: (ai_local) C:\Users\americo\Downloads\pranks\pruebas>


ahora: (ai_local) >

comando para conseguir esto:

prompt (%CONDA_DEFAULT_ENV%) $g


si no estas utilizando anaconda prompt y solo utilizar CMD tradicional este es el comando:

 prompt $g

o

prompt $n$g



martes, 16 de diciembre de 2025

instalar Linux (cualquier distro) con Grub

requisitos: tener un usb con la distro que se quiere instalar en la PC, en mi caso Debian Trixie (Debian 13). esto debe de ser creado con Rufus por ejemplo, en MBR en modo DD

instalación en LAPTOP con GRUB herramienta que utilizo por que no observo boot  con f2,f8, etc etc.

pasos:
PASO 1- Habilitar Grub para poder entrar en modo consola grub>, paraesto en la terminal del equipo (si es linux) colocar el siguiente comando
sudo nano /etc/default/grub
y ahi observar que estas lineas existan o crearlas o descomentarlas:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_TERMINAL=console
después guardar el archivo y realizar el siguiente comando en terminal
sudo update-grub

PASO 2- antes de reiniciar el equipo colocar el USB y reiniciar el equipo y cuando aparezca menú colocar la letra "c" u otra que permita ingresar al grub y tener la siguiente pantalla

PASO 3- Escribe el siguiente comando para ver los discos y particiones detectados  "ls"   comandos linux, usualmente se observa :  (hd0)(hd0,msdos1)(hd1)(hd1,msdos1) o similar.

debe buscar cual es el USB conectado para esto probar:
ls (hd1)/
ls (hd0)/
ls (hd1,msdos1)/
.... etc
debemos de buscar específicamente la carpeta de: /install  donde este esa carpeta es el USB conectado.
y nos anotamos la dirección ya que ese es el USB de donde se debe de instalar, por ejemplo (hd0)

PASO 4-  identificado el USB debe de colocar los siguientes comandos uno a uno
set root=(hd0)
linux /install.amd/vmlinuz
initrd /install.amd/initrd.gz
boot
con esto empieza de manera normal un instalación tipica de Debian, utilizando pero grub sin entrar al bios o seleccionar BOOT


2



domingo, 9 de febrero de 2025

guia rapida para instalar tensorflow en windows 11 para utilizarlo con VScode

la siguiente guía es para instalar tensorflow de manera nativa en una computadora con windows 11.

De los links referencias se puede resumir todo en el siguiente grafico:


Tensorflow

https://www.tensorflow.org/?hl=en

Driver actualizado de la tarjeta grafica Nvidia Geforce

https://www.nvidia.com/es-es/drivers/

CUDA

https://developer.nvidia.com/cuda-toolkit

cuDNN

https://developer.nvidia.com/cudnn


Código para ver si funciona Tensorflow utilizando GPU.

import tensorflow as tf # type: ignore

print("num. de GPUs disponibles = ", len(tf.config.experimental.list_physical_devices('GPU')))


if tf.config.list_physical_devices('GPU'):

    gpu_details = tf.config.experimental.get_device_details(tf.config.list_physical_devices('GPU')[0])

    print("Nombre de la GPU:", gpu_details.get('device_name', 'Desconocido'))

 



domingo, 10 de noviembre de 2024

C++ de arduino sobre Notepad

 esto ayuda a que se pueda tener los mismos estilos (aprox.) que arduino IDE pero en notepad++



git clone https://github.com/FLL-e/Notepadpp-Arduino.git

copiar los archivos XML de la carpeta que se descargo


y pegarlos a la carpeta de lenguajes definidos por usuario, esta carpeta se lo puede abrir desde Notepad++


Finalmente debería de quedar algo así:


reiniciar NOTEPAD++ y a disfrutar de lenguaje C++ estilo arduino sobre este editor


jueves, 25 de julio de 2024

Python + OPENCV + Arduino/ESP


Comando para crear un ambiente virtual, instalar requerimientos para trabajar con jupyter notebook, ademas de la libreria Pyserial para controlar con rs232 una placa Arduino o ESP32


comandos en orden:


conda info --env

conda update --all --yes

conda create -n OPENCV python=3.9


conda activate OPENCV

python --version

conda install anaconda::jupyter

si no se ejecuta, antes de instalar  jupyter hacer correr este comando: conda config --set channel_priority flexible

conda install conda-forge::opencv

conda install anaconda::pyserial

conda update pip

si no se ejecuta, antes del conda update pip ejecutar este comando: conda config --add channels conda-forge  

pip install cvzone

pip install mediapipe

pip install controller




viernes, 5 de julio de 2024

Kali Linux sobre Windows utilizando Docker

Estos pasos los realizo, talvez se pueden reducir a mucho menos pasos, pero así me ¡funciona! utilizando un dockerfile.

1- En un sistema Windows descargar e instalar Docker desktop



2- una vez abierto el docker desktop, Pull a la imagen Kalilinux/kali-rolling que es la que recomiendo utilizar

3- Verificamos si ya tenemos la imagen Kalilinux/kali-rolling en PowerShell de windows 

4- entramos a kali linux

 docker run -it kalilinux/kali-rolling

5- ejecutamos los siguientes comandos

apt update

apt full-upgrade -y

apt autoremove -y


5- damos build al archivo dockerfile colocando un nombre de la imagen  nueva (yo le llame mikaliwin), y a esperar que descargue (mucho tiempo, vi una película con todo lo que tardo), descarga aproximadamente 4Gb.


6- momento de utilizar Kali con docker en windows

 docker run -it --network=host mikaliwin bash


Adicional: si por ejemplo nos olvidamos la instalación de un programa, una vez dentro del Kali, en linea Bash por ejemplo pudiéramos instalar:

apt install net-tools