diff --git a/README.md b/README.md index 88cf392e..78a79cad 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,9 @@ txtai executes machine-learning workflows to transform data and build AI-powered Traditional search systems use keywords to find data. Semantic search applications have an understanding of natural language and identify results that have the same meaning, not necessarily the same keywords. +![search](https://raw.githubusercontent.com/neuml/txtai/master/docs/images/search.png#only-light) +![search](https://raw.githubusercontent.com/neuml/txtai/master/docs/images/search-dark.png#only-dark) + Backed by state-of-the-art machine learning models, data is transformed into vector representations for search (also known as embeddings). Innovation is happening at a rapid pace, models can understand concepts in documents, audio, images and more. Summary of txtai features: @@ -46,7 +49,12 @@ Summary of txtai features: - 🔗 API bindings for [JavaScript](https://github.com/neuml/txtai.js), [Java](https://github.com/neuml/txtai.java), [Rust](https://github.com/neuml/txtai.rs) and [Go](https://github.com/neuml/txtai.go) - ☁️ Cloud-native architecture that scales out with container orchestration systems (e.g. Kubernetes) -Applications range from similarity search to complex NLP-driven data extractions to generate structured databases. The following applications are powered by txtai. +Applications range from similarity search to complex NLP-driven data extractions to generate structured databases. Semantic workflows transform and find data driven by user intent. + +![flows](https://raw.githubusercontent.com/neuml/txtai/master/docs/images/flows.png#only-light) +![flows](https://raw.githubusercontent.com/neuml/txtai/master/docs/images/flows-dark.png#only-dark) + +The following applications are powered by txtai. ![apps](https://raw.githubusercontent.com/neuml/txtai/master/apps.jpg) diff --git a/demo.gif b/demo.gif index 8a617fff..f6d5b7b7 100644 Binary files a/demo.gif and b/demo.gif differ diff --git a/docs/images/flows-dark.png b/docs/images/flows-dark.png new file mode 100644 index 00000000..6096e273 Binary files /dev/null and b/docs/images/flows-dark.png differ diff --git a/docs/images/flows.excalidraw b/docs/images/flows.excalidraw new file mode 100644 index 00000000..777ea8d7 --- /dev/null +++ b/docs/images/flows.excalidraw @@ -0,0 +1,821 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "text", + "version": 536, + "versionNonce": 1665188440, + "isDeleted": false, + "id": "Buic2Lx427wuSIW8P_Rw5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 781, + "y": 142, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 371, + "height": 46, + "seed": 373648901, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678188283, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Application Workflows", + "baseline": 32, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Application Workflows" + }, + { + "type": "rectangle", + "version": 1629, + "versionNonce": 653362472, + "isDeleted": false, + "id": "qYd3q0Vjks7VOHUC9RR51", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 425, + "y": 339.5, + "strokeColor": "#00e676", + "backgroundColor": "#00e676", + "width": 290.0000000000001, + "height": 46, + "seed": 1441952427, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "text", + "id": "WPeWn6N4rCHf0jY16N9Ge" + } + ], + "updated": 1658678190330, + "link": null, + "locked": false + }, + { + "type": "arrow", + "version": 311, + "versionNonce": 924248664, + "isDeleted": false, + "id": "tgnQzXC9s8RY4oImBOXuB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 562.5285999651802, + "y": 272.4578674923631, + "strokeColor": "#000", + "backgroundColor": "#228be6", + "width": 0.4714000348197942, + "height": 72.5421325076369, + "seed": 650463755, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658678202111, + "link": null, + "locked": false, + "startBinding": { + "elementId": "B435ajoI5vAQBDvzkd8aY", + "focus": 0.05963733900881362, + "gap": 5.457867492363107 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.4714000348197942, + 72.5421325076369 + ] + ] + }, + { + "type": "text", + "version": 1323, + "versionNonce": 515031384, + "isDeleted": false, + "id": "WPeWn6N4rCHf0jY16N9Ge", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 430, + "y": 344.5, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 870516459, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678190330, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Translate", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "qYd3q0Vjks7VOHUC9RR51", + "originalText": "Translate" + }, + { + "type": "rectangle", + "version": 168, + "versionNonce": 2070244952, + "isDeleted": false, + "id": "IxMxusRKX2PpnJT1uY0cC", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 819, + "y": 217.5, + "strokeColor": "#ffeb3b", + "backgroundColor": "#ffeb3b", + "width": 290.0000000000001, + "height": 49, + "seed": 1364021803, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "text", + "id": "SSXjX_URKvcVC8h-Qgz4j" + }, + { + "id": "_YNRYTAnVzdhhKxFtkVyg", + "type": "arrow" + } + ], + "updated": 1658678121633, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 73, + "versionNonce": 1790001960, + "isDeleted": false, + "id": "SSXjX_URKvcVC8h-Qgz4j", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 824, + "y": 224, + "strokeColor": "#000000", + "backgroundColor": "#82c91e", + "width": 280, + "height": 36, + "seed": 948915563, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121633, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Extract Text", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "IxMxusRKX2PpnJT1uY0cC", + "originalText": "Extract Text" + }, + { + "type": "rectangle", + "version": 205, + "versionNonce": 1180033880, + "isDeleted": false, + "id": "lATIKISgJPOGnUHleuFRH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 821, + "y": 338, + "strokeColor": "#03a9f4", + "backgroundColor": "#03a9f4", + "width": 290.0000000000001, + "height": 46, + "seed": 1256311595, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "21WiUuyDtpQ9FnJ74REpJ", + "type": "text" + }, + { + "type": "text", + "id": "21WiUuyDtpQ9FnJ74REpJ" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + } + ], + "updated": 1658678121633, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 84, + "versionNonce": 1559141928, + "isDeleted": false, + "id": "21WiUuyDtpQ9FnJ74REpJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 826, + "y": 343, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 626266373, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121633, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Summarize", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "lATIKISgJPOGnUHleuFRH", + "originalText": "Summarize" + }, + { + "type": "arrow", + "version": 150, + "versionNonce": 108519256, + "isDeleted": false, + "id": "_YNRYTAnVzdhhKxFtkVyg", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 962.2340210300499, + "y": 270, + "strokeColor": "#000", + "backgroundColor": "#228be6", + "width": 0.2659789699500834, + "height": 75, + "seed": 101249451, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658678205029, + "link": null, + "locked": false, + "startBinding": { + "elementId": "IxMxusRKX2PpnJT1uY0cC", + "focus": 0.012856281024868153, + "gap": 3.5 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0.2659789699500834, + 75 + ] + ] + }, + { + "type": "rectangle", + "version": 213, + "versionNonce": 1959303464, + "isDeleted": false, + "id": "6B3J0wJfi561c9gMsgtXG", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 824, + "y": 455, + "strokeColor": "#7950f2", + "backgroundColor": "#7950f2", + "width": 290.0000000000001, + "height": 46, + "seed": 1164190923, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "qJDqmDEZF9Ewh2UrjXq5Z", + "type": "text" + }, + { + "type": "text", + "id": "qJDqmDEZF9Ewh2UrjXq5Z" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + } + ], + "updated": 1658678121634, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 135, + "versionNonce": 210169176, + "isDeleted": false, + "id": "qJDqmDEZF9Ewh2UrjXq5Z", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 829, + "y": 460, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 1307943269, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121634, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Build Vector Index", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "6B3J0wJfi561c9gMsgtXG", + "originalText": "Build Vector Index" + }, + { + "type": "arrow", + "version": 203, + "versionNonce": 133313624, + "isDeleted": false, + "id": "Q51e0Hav-kYfjX3b8tt-r", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 963.600775377322, + "y": 387.5, + "strokeColor": "#000", + "backgroundColor": "#228be6", + "width": 0.29392358842710564, + "height": 66.5, + "seed": 59173285, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658678208037, + "link": null, + "locked": false, + "startBinding": { + "elementId": "lATIKISgJPOGnUHleuFRH", + "focus": 0.015253485349599789, + "gap": 3.5 + }, + "endBinding": { + "elementId": "6B3J0wJfi561c9gMsgtXG", + "focus": -0.039966641220930875, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -0.29392358842710564, + 66.5 + ] + ] + }, + { + "type": "rectangle", + "version": 1219, + "versionNonce": 1987359528, + "isDeleted": false, + "id": "5VuUdI_BsJ5pyE1nTqJUI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1195, + "y": 221, + "strokeColor": "#7950f2", + "backgroundColor": "#7950f2", + "width": 290.0000000000001, + "height": 46, + "seed": 1044404613, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "bJJ9SGsJsvT071qBBH0w5", + "type": "text" + }, + { + "id": "bJJ9SGsJsvT071qBBH0w5", + "type": "text" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + }, + { + "type": "text", + "id": "bJJ9SGsJsvT071qBBH0w5" + } + ], + "updated": 1658678209478, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1403, + "versionNonce": 1434611496, + "isDeleted": false, + "id": "bJJ9SGsJsvT071qBBH0w5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1200, + "y": 226, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 128953675, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121634, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Run similarity query", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5VuUdI_BsJ5pyE1nTqJUI", + "originalText": "Run similarity query" + }, + { + "type": "rectangle", + "version": 332, + "versionNonce": 226326360, + "isDeleted": false, + "id": "pSbgtf1qAB7tWl-pTld7e", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1197, + "y": 343, + "strokeColor": "#f44336", + "backgroundColor": "#f44336", + "width": 290.0000000000001, + "height": 46, + "seed": 210689733, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "pQzKSM3audka1kiQm_Sku", + "type": "text" + }, + { + "id": "pQzKSM3audka1kiQm_Sku", + "type": "text" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + }, + { + "id": "pQzKSM3audka1kiQm_Sku", + "type": "text" + }, + { + "type": "text", + "id": "pQzKSM3audka1kiQm_Sku" + }, + { + "id": "k67YzXNtt1GLh4i8Es5zJ", + "type": "arrow" + } + ], + "updated": 1658678121634, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 290, + "versionNonce": 750406184, + "isDeleted": false, + "id": "pQzKSM3audka1kiQm_Sku", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1202, + "y": 348, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 1869028363, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121635, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Send notifications", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "pSbgtf1qAB7tWl-pTld7e", + "originalText": "Send notifications" + }, + { + "type": "arrow", + "version": 308, + "versionNonce": 1589736280, + "isDeleted": false, + "id": "k67YzXNtt1GLh4i8Es5zJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1339.1171359117898, + "y": 265.5, + "strokeColor": "#000", + "backgroundColor": "#228be6", + "width": 1.0119492860442278, + "height": 76.5, + "seed": 1656816747, + "groupIds": [], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658678212274, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "pSbgtf1qAB7tWl-pTld7e", + "focus": -0.010690950588675632, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.0119492860442278, + 76.5 + ] + ] + }, + { + "type": "text", + "version": 308, + "versionNonce": 641647912, + "isDeleted": false, + "id": "kKPPLMCj8QQIJLbW-B5hm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1180, + "y": 451, + "strokeColor": "#000", + "backgroundColor": "#fab005", + "width": 296, + "height": 52, + "seed": 1079990731, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121635, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "- API bindings for JavaScript,\n Rust, Go and Java", + "baseline": 44, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- API bindings for JavaScript,\n Rust, Go and Java" + }, + { + "type": "text", + "version": 560, + "versionNonce": 1977188696, + "isDeleted": false, + "id": "1AQ3rj-V4weRtPA8a5-z-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 437.5, + "y": 449.5, + "strokeColor": "#000", + "backgroundColor": "#fab005", + "width": 278, + "height": 52, + "seed": 836512075, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678121635, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "- Build with Python or YAML\n- Run local or via API", + "baseline": 44, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- Build with Python or YAML\n- Run local or via API" + }, + { + "type": "rectangle", + "version": 292, + "versionNonce": 259776552, + "isDeleted": false, + "id": "B435ajoI5vAQBDvzkd8aY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 426, + "y": 221, + "strokeColor": "#03a9f4", + "backgroundColor": "#03a9f4", + "width": 290.0000000000001, + "height": 46, + "seed": 942981672, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "AoGnxEHn4x-zq2-0C0VrT", + "type": "text" + }, + { + "id": "AoGnxEHn4x-zq2-0C0VrT", + "type": "text" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + }, + { + "type": "text", + "id": "AoGnxEHn4x-zq2-0C0VrT" + }, + { + "id": "tgnQzXC9s8RY4oImBOXuB", + "type": "arrow" + } + ], + "updated": 1658678121635, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 171, + "versionNonce": 2093287976, + "isDeleted": false, + "id": "AoGnxEHn4x-zq2-0C0VrT", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 431, + "y": 226, + "strokeColor": "#000000", + "backgroundColor": "#fa5252", + "width": 280, + "height": 36, + "seed": 604886104, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658678188284, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Summarize", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "B435ajoI5vAQBDvzkd8aY", + "originalText": "Summarize" + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#3030" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/images/flows.png b/docs/images/flows.png new file mode 100644 index 00000000..5badfd53 Binary files /dev/null and b/docs/images/flows.png differ diff --git a/docs/images/search-dark.png b/docs/images/search-dark.png new file mode 100644 index 00000000..7b5f40ea Binary files /dev/null and b/docs/images/search-dark.png differ diff --git a/docs/images/search.excalidraw b/docs/images/search.excalidraw new file mode 100644 index 00000000..227f04b1 --- /dev/null +++ b/docs/images/search.excalidraw @@ -0,0 +1,555 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "text", + "version": 354, + "versionNonce": 1260634512, + "isDeleted": false, + "id": "Buic2Lx427wuSIW8P_Rw5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 829, + "y": 184, + "strokeColor": "#000000", + "backgroundColor": "#228be6", + "width": 452, + "height": 46, + "seed": 373648901, + "groupIds": [], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676789638, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "What is semantic search?", + "baseline": 32, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "What is semantic search?" + }, + { + "type": "rectangle", + "version": 786, + "versionNonce": 1756557200, + "isDeleted": false, + "id": "U2NgEIEiFpAlwmv5Xnyzr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "angle": 0, + "x": 555.5, + "y": 425.30499999999995, + "strokeColor": "#7950f2", + "backgroundColor": "#7950f2", + "width": 995.3286713286714, + "height": 339.0000000000001, + "seed": 1946478225, + "groupIds": [ + "C_65R9XVeMQED2nMfIW2D" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676804492, + "link": "", + "locked": false + }, + { + "type": "text", + "version": 569, + "versionNonce": 1675727216, + "isDeleted": false, + "id": "fbSO8bnZmAdvIXZxBAtHY", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 570.7237762237763, + "y": 439.50080419580416, + "strokeColor": "#000", + "backgroundColor": "#03a9f4", + "width": 967, + "height": 312, + "seed": 1586673137, + "groupIds": [ + "C_65R9XVeMQED2nMfIW2D" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676804492, + "link": null, + "locked": false, + "fontSize": 20.27972027972028, + "fontFamily": 1, + "text": "Query Best Match\n----------------------------------------------------\nfeel good story Maine man wins $1M from $25 lottery ticket\nclimate change Canada's last fully intact ice shelf has suddenly collapsed, forming a \n Manhattan-sized iceberg\npublic health story US tops 5 million confirmed virus cases\nwar Beijing mobilises invasion craft along coast as Taiwan tensions escalate\nwildlife The National Park Service warns against sacrificing slower friends in a\n bear attack\nasia Beijing mobilises invasion craft along coast as Taiwan tensions escalate\nlucky Maine man wins $1M from $25 lottery ticket\ndishonest junk Make huge profits without work, earn up to $100,000 a day", + "baseline": 304, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Query Best Match\n----------------------------------------------------\nfeel good story Maine man wins $1M from $25 lottery ticket\nclimate change Canada's last fully intact ice shelf has suddenly collapsed, forming a \n Manhattan-sized iceberg\npublic health story US tops 5 million confirmed virus cases\nwar Beijing mobilises invasion craft along coast as Taiwan tensions escalate\nwildlife The National Park Service warns against sacrificing slower friends in a\n bear attack\nasia Beijing mobilises invasion craft along coast as Taiwan tensions escalate\nlucky Maine man wins $1M from $25 lottery ticket\ndishonest junk Make huge profits without work, earn up to $100,000 a day" + }, + { + "type": "rectangle", + "version": 952, + "versionNonce": 581259632, + "isDeleted": false, + "id": "UO6MS3wSDu7yg2421__LI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 933, + "y": 267, + "strokeColor": "#ffeb3b", + "backgroundColor": "#ffeb3b", + "width": 214, + "height": 49, + "seed": 1629565989, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "text", + "id": "8sp7H8ijWBlh6aMgZ0XTP" + }, + { + "id": "Qzp41i_jzQIBlAB_qFKFH", + "type": "arrow" + }, + { + "id": "SJ0F0Y81z9hir5qQWAJjk", + "type": "arrow" + } + ], + "updated": 1658676831306, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1611, + "versionNonce": 1109835152, + "isDeleted": false, + "id": "qYd3q0Vjks7VOHUC9RR51", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 549, + "y": 267.5, + "strokeColor": "#03a9f4", + "backgroundColor": "#03a9f4", + "width": 219, + "height": 52, + "seed": 1441952427, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [ + { + "type": "text", + "id": "WPeWn6N4rCHf0jY16N9Ge" + }, + { + "id": "Qzp41i_jzQIBlAB_qFKFH", + "type": "arrow" + } + ], + "updated": 1658676831306, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1297, + "versionNonce": 1725539184, + "isDeleted": false, + "id": "WPeWn6N4rCHf0jY16N9Ge", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 554, + "y": 275.5, + "strokeColor": "#000", + "backgroundColor": "#fa5252", + "width": 209, + "height": 36, + "seed": 870516459, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831306, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Vectorize", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "qYd3q0Vjks7VOHUC9RR51", + "originalText": "Vectorize" + }, + { + "type": "rectangle", + "version": 1198, + "versionNonce": 1201179536, + "isDeleted": false, + "id": "5VuUdI_BsJ5pyE1nTqJUI", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1332, + "y": 268, + "strokeColor": "#00e676", + "backgroundColor": "#00e676", + "width": 218, + "height": 49, + "seed": 1044404613, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [ + { + "id": "bJJ9SGsJsvT071qBBH0w5", + "type": "text" + }, + { + "id": "bJJ9SGsJsvT071qBBH0w5", + "type": "text" + }, + { + "id": "Q51e0Hav-kYfjX3b8tt-r", + "type": "arrow" + }, + { + "type": "text", + "id": "bJJ9SGsJsvT071qBBH0w5" + }, + { + "id": "SJ0F0Y81z9hir5qQWAJjk", + "type": "arrow" + } + ], + "updated": 1658676831306, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1381, + "versionNonce": 78886256, + "isDeleted": false, + "id": "bJJ9SGsJsvT071qBBH0w5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1337, + "y": 274.5, + "strokeColor": "#000", + "backgroundColor": "#fa5252", + "width": 208, + "height": 36, + "seed": 128953675, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831306, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Search", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5VuUdI_BsJ5pyE1nTqJUI", + "originalText": "Search" + }, + { + "type": "text", + "version": 942, + "versionNonce": 429955472, + "isDeleted": false, + "id": "8sp7H8ijWBlh6aMgZ0XTP", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 938, + "y": 273.5, + "strokeColor": "#000", + "backgroundColor": "transparent", + "width": 204, + "height": 36, + "seed": 1854823263, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831306, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Index", + "baseline": 25, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "UO6MS3wSDu7yg2421__LI", + "originalText": "Index" + }, + { + "type": "text", + "version": 382, + "versionNonce": 1098614640, + "isDeleted": false, + "id": "jWJpSXHkTCzRTCA4tbAgv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 548.5, + "y": 347.30499999999995, + "strokeColor": "#000", + "backgroundColor": "#03a9f4", + "width": 296, + "height": 42, + "seed": 1241563487, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831307, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "- Transform input into numbers\n- Similar concepts have similar values", + "baseline": 36, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- Transform input into numbers\n- Similar concepts have similar values" + }, + { + "type": "text", + "version": 381, + "versionNonce": 1266083728, + "isDeleted": false, + "id": "qEnmXs0P_MQE8r4c4OWGh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 931.5, + "y": 346.2074999999999, + "strokeColor": "#000", + "backgroundColor": "#f44336", + "width": 230, + "height": 42, + "seed": 1038536465, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831307, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "- Save vectors\n- Store content with vectors", + "baseline": 36, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- Save vectors\n- Store content with vectors" + }, + { + "type": "text", + "version": 491, + "versionNonce": 2037979504, + "isDeleted": false, + "id": "1q8bzjK8lnKUZj8_A9v7D", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1243, + "y": 349.2074999999999, + "strokeColor": "#000", + "backgroundColor": "#f44336", + "width": 333, + "height": 42, + "seed": 304472945, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "sharp", + "boundElements": [], + "updated": 1658676831307, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "- Find similar vectors with cosine similarity\n- Add rule-based filters using content", + "baseline": 36, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- Find similar vectors with cosine similarity\n- Add rule-based filters using content" + }, + { + "type": "arrow", + "version": 1813, + "versionNonce": 1230206352, + "isDeleted": false, + "id": "Qzp41i_jzQIBlAB_qFKFH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 770.5, + "y": 289.8470411964629, + "strokeColor": "#000", + "backgroundColor": "#f44336", + "width": 158.1310513485223, + "height": 0.5692601572380909, + "seed": 660786897, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658676831307, + "link": null, + "locked": false, + "startBinding": { + "elementId": "qYd3q0Vjks7VOHUC9RR51", + "focus": -0.15367587596362536, + "gap": 2.5 + }, + "endBinding": { + "elementId": "UO6MS3wSDu7yg2421__LI", + "focus": 0.027437144815141, + "gap": 4.3689486514776945 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 158.1310513485223, + 0.5692601572380909 + ] + ] + }, + { + "type": "arrow", + "version": 1962, + "versionNonce": 1072982896, + "isDeleted": false, + "id": "SJ0F0Y81z9hir5qQWAJjk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1149.5, + "y": 292.6790761701911, + "strokeColor": "#000", + "backgroundColor": "#f44336", + "width": 181.5, + "height": 1.5898915058209013, + "seed": 899541905, + "groupIds": [ + "3sURMvhuRfR0M-Q3VRPbg" + ], + "strokeSharpness": "round", + "boundElements": [], + "updated": 1658676831307, + "link": null, + "locked": false, + "startBinding": { + "elementId": "UO6MS3wSDu7yg2421__LI", + "focus": 0.08406032225724415, + "gap": 2.5 + }, + "endBinding": { + "elementId": "5VuUdI_BsJ5pyE1nTqJUI", + "focus": 0.09327847520504394, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 181.5, + -1.5898915058209013 + ] + ] + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/images/search.png b/docs/images/search.png new file mode 100644 index 00000000..2bb471d5 Binary files /dev/null and b/docs/images/search.png differ diff --git a/docs/index.md b/docs/index.md index 84a69541..0127a1fd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,6 +37,9 @@ txtai executes machine-learning workflows to transform data and build AI-powered Traditional search systems use keywords to find data. Semantic search applications have an understanding of natural language and identify results that have the same meaning, not necessarily the same keywords. +![search](images/search.png#only-light) +![search](images/search-dark.png#only-dark) + Backed by state-of-the-art machine learning models, data is transformed into vector representations for search (also known as embeddings). Innovation is happening at a rapid pace, models can understand concepts in documents, audio, images and more. Summary of txtai features: @@ -48,7 +51,12 @@ Summary of txtai features: - 🔗 API bindings for [JavaScript](https://github.com/neuml/txtai.js), [Java](https://github.com/neuml/txtai.java), [Rust](https://github.com/neuml/txtai.rs) and [Go](https://github.com/neuml/txtai.go) - ☁️ Cloud-native architecture that scales out with container orchestration systems (e.g. Kubernetes) -Applications range from similarity search to complex NLP-driven data extractions to generate structured databases. The following applications are powered by txtai. +Applications range from similarity search to complex NLP-driven data extractions to generate structured databases. Semantic workflows transform and find data driven by user intent. + +![flows](images/flows.png#only-light) +![flows](images/flows-dark.png#only-dark) + +The following applications are powered by txtai. ![apps](https://raw.githubusercontent.com/neuml/txtai/master/apps.jpg)