The Gram-Schmidt process is a method of orthogonalization which produces an orthonormal basis via projection.
Given non-zero linearly independent vectors which form a basis for a subspace we define the orthogonal basis and the orthonormal basis via the following iterative process: