Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Uncomment these types if you want even more clean repository. But be careful.
# It can make harm to an existing project source. Read explanations below.
#
# Resource files are binaries containing manifest, project icon and version info.
# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
#*.res
#
# Type library file (binary). In old Delphi versions it should be stored.
# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
#*.tlb
#
# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
# Uncomment this if you are not using diagrams or use newer Delphi version.
#*.ddp
#
# Visual LiveBindings file. Added in Delphi XE2.
# Uncomment this if you are not using LiveBindings Designer.
#*.vlb
#
# Deployment Manager configuration file for your project. Added in Delphi XE2.
# Uncomment this if it is not mobile development and you do not use remote debug feature.
#*.deployproj
#
# C++ object files produced when C/C++ Output file generation is configured.
# Uncomment this if you are not using external objects (zlib library for example).
#*.obj
#

# Delphi compiler-generated binaries (safe to delete)
*.exe
*.dll
*.bpl
*.bpi
*.dcp
*.so
*.apk
*.drc
*.map
*.dres
*.rsm
*.tds
*.dcu
*.lib
*.a
*.o
*.ocx

# Delphi autogenerated files (duplicated info)
*.cfg
*.hpp
*Resource.rc

# Delphi local files (user-specific info)
*.local
*.identcache
*.projdata
*.tvsconfig
*.dsk

# Delphi history and backups
__history/
__recovery/
*.~*

# C++Builder compiler-generated binaries
*.obj
*.tds
*.pch
*.ilc
*.ild
*.ilf
*.ils

# C++Builder libraries and debug info
*.lib
*.a
*.bpi
*.bpl
*.dcp
*.dcu
*.map

# C++Builder intermediate files
*.res
*.rsm
*.exp
*.idb
*.pdb

# C++Builder autogenerated headers
*.hpp
*.d

# C++Builder local/IDE specific
*.local
*.dsk
*.tvsconfig
*.identcache

# Build output directories
Win32/
Win64/
Win64x/

# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
*.stat

# Boss dependency manager vendor folder https://github.com/HashLoad/boss
modules/

# Excessive project files

*.delphilsp.json
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

This example adds AI-powered filter capabilities to the [DevExpress VCL Data Grid](https://docs.devexpress.com/VCL/171093/ExpressQuantumGrid/vcl-data-grid) (using a lightweight ONNX model and a BERT tokenizer). Unlike built-in search/filter operations, Smart AI Filter compares strings based on semantic similarities rather than exact matches.

![An application that displays a search query "accessories" and a list of items filtered using the AI-powered smart search](./images/accessories.png)

## Third-Party Dependencies

* [TONNXRuntime](https://github.com/hshatti/TONNXRuntime)
Expand All @@ -16,26 +18,34 @@
## Prerequisites

* Microsoft Windows 10 (64-bit) or newer
* [ONNX Runtime v1.23.0](https://github.com/microsoft/onnxruntime) (required to run on Windows 10)

Check warning on line 21 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L21

[DX.RayRules-Alternatives] Use 'vXX.Y' instead of just 'XX.Y' when mentioning version numbers.
Raw output
{"message": "[DX.RayRules-Alternatives] Use 'vXX.Y' instead of just 'XX.Y' when mentioning version numbers.", "location": {"path": "README.md", "range": {"start": {"line": 21, "column": 20}}}, "severity": "WARNING"}
* Embarcadero RAD Studio IDE 12 or newer (Community Edition is not supported)
* DevExpress VCL Components v25.1.5 or newer

## Deploy and Run

1. Clone this repository. Required dependencies automatically appear in **BertTokenizer4D** and **TONNXRuntime** folders.
1. Clone this repository (including submodules):
```sh
git clone --recurse-submodules git@github.com:DevExpress-Examples/vcl-grid-smart-semantic-filter.git
```
If you have already cloned the repository without submodules, initialize them using the following command:
```sh
git submodule update --init --recursive
```

2. Open and build the **SimilaritySearch** project (DPR).
3. If using Windows 10 (64-bit), place the latest version of `onnxruntime.dll` (available in the [official repository](https://github.com/microsoft/onnxruntime)) into the executable file folder.
4. Run the sample project.

## Testing the Example
## Test the Example

Type a word or phrase into the **Smart Search AI Filter** field and click **Apply**.

<!-- feedback -->
## Does this example address your development requirements/objectives?

[<img src="https://www.devexpress.com/support/examples/i/yes-button.svg"/>](https://www.devexpress.com/support/examples/survey.xml?utm_source=github&utm_campaign=vcl-grid-smart-semantic-filter&~~~was_helpful=yes) [<img src="https://www.devexpress.com/support/examples/i/no-button.svg"/>](https://www.devexpress.com/support/examples/survey.xml?utm_source=github&utm_campaign=vcl-grid-smart-semantic-filter&~~~was_helpful=no)

## Does this example address your development requirements/objectives?

Check failure on line 45 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L45

[DX.HeadingCapitalization] 'Does this example address your development requirements/objectives?' should match our guidelines for title case
Raw output
{"message": "[DX.HeadingCapitalization] 'Does this example address your development requirements/objectives?' should match our guidelines for title case", "location": {"path": "README.md", "range": {"start": {"line": 45, "column": 4}}}, "severity": "ERROR"}

Check failure on line 45 in README.md

View workflow job for this annotation

GitHub Actions / vale

[vale] README.md#L45

[DX.HeadingPunctuation] Don't use end punctuation at the end of headings.
Raw output
{"message": "[DX.HeadingPunctuation] Don't use end punctuation at the end of headings.", "location": {"path": "README.md", "range": {"start": {"line": 45, "column": 69}}}, "severity": "ERROR"}
[<img src="https://www.devexpress.com/support/examples/i/yes-button.svg"/>](https://www.devexpress.com/support/examples/survey.xml?utm_source=github&utm_campaign=vcl-grid-smart-semantic-filter&~~~was_helpful=yes) [<img src="https://www.devexpress.com/support/examples/i/no-button.svg"/>](https://www.devexpress.com/support/examples/survey.xml?utm_source=github&utm_campaign=vcl-grid-smart-semantic-filter&~~~was_helpful=no)
(you will be redirected to DevExpress.com to submit your response)
<!-- feedback end -->

Expand Down
Binary file added images/accessories.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading