The SQLite FTS module creates several βinternalβ tables for each virtual table that you define. These tables are clearly visible in the database schema, so the FTS virtual tables, as well as their underlying data, are completely contained in the database file.
This may differ from other types of virtual table; for example, the VirtualShape extension allows you to read ESRI shaping files (.shp) as tables; these (naturally) are stored separately from the SQLite database file.
In any case, the definition of the virtual table itself is stored in the database file, like a regular table; so the answer to your question is:
No, there is no need to recreate them every time you open the database.
source share