rmsstuttgart / rms-ai-search
AI Search extension for TYPO3 - connect your TYPO3 to https://chat.rm-solutions.de/
Package info
github.com/rmsstuttgart/rms-ai-search-public
Type:typo3-cms-extension
pkg:composer/rmsstuttgart/rms-ai-search
Requires
- typo3/cms-backend: ^13.4 || ^14.0
- typo3/cms-core: ^13.4 || ^14.0
- typo3/cms-extbase: ^13.4 || ^14.0
- typo3/cms-frontend: ^13.4 || ^14.0
- typo3/cms-install: ^13.4 || ^14.0
Requires (Dev)
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Versions
- Version 2.x is only compatible with TYPO3 v13
- Version 1.x is compatible with TYPO3 v12 and TYPO3 v13
After updating TYPO3 v12 to v13 there is an Upgrade Wizard that converts the ai-search plugins to V13 compatible integrations
Introduction
This TYPO3 extension provides AI-powered search functionality. It can connect your search to https://chat.rm-solutions.de/
For an AI-Powered search example see https://rm-solutions.de/suche/
Install
install extension with composer:
composer require rmsstuttgart/rms-ai-search
Template
Include the extension template in your template (Include TypoScript sets). Then you can overwrite the extension template and settings similar to any other TYPO3 extension.
Add this to your main templates constants
plugin.tx_rmsaisearch {
view {
templateRootPath = EXT:your_template/Resources/Private/ext/AiSearch/Templates/
}
}
Add the contents of
EXT:rms-ai-search/Resources/Private/Templates/Search/Search.html to EXT:your_template/Resources/Private/ext/AiSearch/Templates/Search/Search.html and modify structure and classes to match your frontend.
Be aware that some classes / ids are needed for the dynamic content creation with javascript to display the search results and links lists.
Links to static assets for custom integrations of the search form.
Replace the folder name (i.e. 2.1.1) with the version you want to use. See CHANGELOG.md for releases and details
v2.1.1
- https://chat.rm-solutions.de/ext-ai-search-assets/2.1.1/js/app.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/2.1.1/js/markdown-it.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/2.1.1/css/app.min.css
v1.1.0
- https://chat.rm-solutions.de/ext-ai-search-assets/1.1.0/js/app.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/1.1.0/js/markdown-it.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/1.1.0/css/app.min.css
v1.0.2
- https://chat.rm-solutions.de/ext-ai-search-assets/1.0.2/js/app.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/1.0.2/js/markdown-it.min.js
- https://chat.rm-solutions.de/ext-ai-search-assets/1.0.2/css/app.min.css
FAL document synchronization
The command rms-ai-search:sync-rag-documents synchronizes a configured FAL folder
recursively with the RAG file API. It currently synchronizes PDF files only. It
uploads new or changed PDFs and deletes remote files that no longer exist in the selected
folder. A MySQL table stores the FAL file
UID, relative external file ID, content hash, and most recent API result. Apply the
new database schema through TYPO3's Database Analyzer before the first execution.
Configure the FAL document synchronization fields in the extension configuration:
- FAL storage UID and folder identifier; i.e.
1(fileadmin) and/user_upload/rm-solutions.de/_CHATBOT-AUTOSYNC/ - RAG API URL (host,
/api, or full upload URL); - project hash; and
- OCR, chunking, visibility, origin, and document-language options.
The following upload options can be overridden on individual FAL file metadata records:
- Enable OCR;
- OCR engine (
tesseract,paddleocr, ormistral_ocr); - Public downloadable; and
- Document language.
Leave a file-level field set to Use global configuration to retain the matching extension setting. A changed effective file-level setting triggers an upload during the next synchronization. After upgrading to this version, previously synchronized files are uploaded once so the effective upload settings can be recorded.
The external file ID is based on the file path relative to the configured FAL folder,
so it remains stable across scheduled executions. It is always limited to 255 UTF-8
characters to fit the local MySQL VARCHAR(255) field and the remote API identifier.
For longer paths, a deterministic SHA-256 suffix is added to a truncated path. Existing
remote files are replaced with
overwriteFileByName=1 and forceRecreation=1.
JWT environment variables
Set these environment variables for the PHP process running TYPO3 and cron:
RMS_AI_SEARCH_JWT_SECRET— at least 32 characters;RMS_AI_SEARCH_JWT_ISSUED_BY;RMS_AI_SEARCH_JWT_PERMITTED_FOR; andRMS_AI_SEARCH_JWT_EXPIRE_SECONDS— optional; defaults to3600.
Do not place JWT values in extension configuration, TypoScript, the database, or committed configuration. Use DDEV's ignored local environment setup during development and deployment/hosting secret management in staging and production.
Run and schedule
Test detected changes without API calls or database writes:
ddev exec vendor/bin/typo3 rms-ai-search:sync-rag-documents --dry-run
Run the synchronization:
ddev exec vendor/bin/typo3 rms-ai-search:sync-rag-documents
Schedule it every ten minutes with a system cron job that has the same environment variables as TYPO3:
*/10 * * * * cd /path/to/project && ddev exec vendor/bin/typo3 rms-ai-search:sync-rag-documents