SwiftIntelligence
Búsqueda, respuestas y enmascaramiento de datos personales en el dispositivo para el texto de tu app, construido sobre los frameworks de Apple.
Licencia: MIT
Un paquete Swift que hace que el texto de una app de iOS o macOS se pueda buscar y responder en el propio dispositivo. Los documentos entran en un actor KnowledgeBase que los fragmenta, opcionalmente los enmascara, los convierte en embeddings y los indexa; las búsquedas combinan los rankings de BM25 y de vectores con reciprocal rank fusion; en iOS 26 y macOS 26, el modelo en el dispositivo de Apple responde a partir de los mejores fragmentos con citas. Construido sobre NaturalLanguage, Accelerate y Foundation Models, sin dependencias.
Características
- Búsqueda híbrida: cada fragmento se indexa por sus palabras (BM25) y como vector, y los dos rankings se combinan con reciprocal rank fusion
- Respuestas con fuentes: answer(_:) pide al modelo en el dispositivo de Apple que responda solo a partir de los mejores fragmentos y los cite; groundedPrompt(for:) construye el mismo prompt para cualquier otro modelo
- Enmascaramiento reversible de ocho tipos de datos personales; los números de tarjeta e IBAN deben superar sus dígitos de control, y la coincidencia se ejecuta sobre una copia normalizada ('folded') del texto
- Tres embedders (hashing, Apple sentence, Apple contextual) o el tuyo propio a través del protocolo TextEmbedder
- Guardar y restaurar: un archivo con los fragmentos enmascarados y sus vectores, verificado contra el embedder y la versión de formato al cargarlo
- Análisis de texto: idioma, sentimiento, nombres, palabras clave y frases con TextAnalyzer
Inicio rápido
1let knowledge = KnowledgeBase()2try await knowledge.add("You can return any item within 30 days of delivery for a full refund.", id: "returns")3try await knowledge.add("Orders ship within two business days; delivery takes three to five days.", id: "shipping")4try await knowledge.add("Every laptop comes with a two-year warranty against defects.", id: "warranty")5 6let results = try await knowledge.search("How do I return an item for a refund?")7print(results.first?.documentID ?? "nothing found") // returns8print(results.first?.text ?? "") // You can return any item within 30 days …Instalación
Swift Package Manager
1dependencies: [2 .package(url: "https://github.com/muhittincamdali/SwiftIntelligence.git", from: "2.0.0")3],4targets: [5 .target(name: "YourApp", dependencies: [6 .product(name: "SwiftIntelligence", package: "SwiftIntelligence")7 ])8]Xcode
1https://github.com/muhittincamdali/SwiftIntelligence.gitCapturas de pantalla






Cronología
Repositorio abierto como un framework amplio de IA/ML; se etiquetaron v1.0.0 y v1.1.0
Trabajo de documentación, README y CI; se etiquetaron de v1.2.0 a v1.2.2
Limpieza: se eliminaron los scripts de release y los módulos sin usar
Reconstruido como 2.0.0: un único library target sin dependencias; no se conservó ninguna API de la serie 1.x