Visualizing item similarities
You could treat your results as an undirected graph with weighted edges. Your nodes are A, B, C, etc. and your vertices are the connections between items, weighted by similarity value.

Here is a Python function that could be a great starting point. It draws thicker connections for vertices with a larger weight. I copied it and replaced the example data with your data points above:

[...]
node_list = ['A', 'B', 'C', 'D', 'J', 'R', 'Y']
[...]
G.add_edge(node_list[0],node_list[2],weight=0.12) # A - C
G.add_edge(node_list[0],node_list[5],weight=0.42) # A - R
G.add_edge(node_list[0],node_list[6],weight=0.34) # A - Y
G.add_edge(node_list[0],node_list[4],weight=0.62) # A - J
G.add_edge(node_list[0],node_list[1],weight=0.16) # A - B
G.add_edge(node_list[0],node_list[6],weight=0.83) # B - Y
G.add_edge(node_list[2],node_list[4],weight=0.21) # C - J


The result is this:



Of course, if you have 40,000 items, that would probably require additional work to make the plot comprehensible. You could begin by ignoring all connections between nodes with a similarity value of, say, 0.01 or less.