Spectral clustering might be a good candidate here. Generally, spectral clustering works as following:
Find a few largest eigenvectors of the adjacency matrix by magnitude, let's say we choose largest M vectors.
Treat each vertex as a N dimensional one-hot unit vector (where N is the number of vertices). Project each vertex into M dimensional "feature" space using the eigenvectors. This can be trivially done by transposing the MxN matrix of eigenvectors. In practice, M can be much smaller than N.
Use general purpose clustering algorithm in the "feature space", such as k-means.
(*sample input*)
nPoints = 2048;
nFeatureDim = 8;
nClusters = 18;
points = Normalize /@ RandomReal[{-1., 1.}, {nPoints, 3}];
adjMatrix = Power[DistanceMatrix[points], 4];
(*cluster on feature space*)
features = Transpose@Eigenvectors[adjMatrix, nFeatureDim];
clusters = FindClusters[features -> Range[nPoints], nClusters, Method ->"KMeans"];
sortedPoints = points[[#]] & /@ clusters;
(*make a render*)
colors = RGBColor /@ Tuples[{{0, 1}, {0, 0.5, 1}, {0, 0.5, 1}}];
vectorRender = Graphics3D[Transpose[{colors, Point /@ sortedPoints}]]
The above example uses a dense matrix. Finding eigenvectors should work equally well on sparse matrices.