From scalars to polynomials
A vector space V lets you scale a vector v by a scalar c in the field F. Now fix a linear operator T on V and ask: can we let polynomials scale vectors too? Define the action of x on v to be T(v). Then x^2 acts as T(T(v)), and a polynomial p(x) = c0 + c1 x + ... acts as c0 v + c1 T(v) + ... . We have given V an action by the polynomial ring F[x].
A set with addition and a ring acting on it (satisfying the usual rules) is a module. So V, equipped with this action, is the [[f-x-module-structure|F[x]-module structure]]. A module is the natural generalization of a vector space where scalars come from a ring instead of a field.
Why this is a brilliant trick
The ring F[x] is a principal ideal domain (PID) — every ideal is generated by one element, exactly like the integers Z. There is a deep classification theorem for modules over a PID. By turning V into a module over a PID, we get to apply that theorem to T for free. The entire similarity problem becomes a special case of module classification.
A worked cyclic example
When a single vector v0 generates all of V by applying T repeatedly, V is cyclic. Then the span {v0, T v0, T^2 v0, ...} eventually stops growing, and the first dependence relation gives the polynomial that 'kills' v0.
V = R^3, pick v0. Apply T over and over: v0, T v0, T^2 v0, T^3 v0, ... The first time T^3 v0 is a linear combination of the earlier ones, say T^3 v0 = a*v0 + b*(T v0) + c*(T^2 v0), rearrange to read off the monic polynomial that annihilates v0: ( x^3 - c x^2 - b x - a ) acts as 0 on v0. That polynomial is the order of the cyclic module F[x]*v0.