# Diagnosis

## Symptom

`fetch` returns vectors whose values differ in the last decimal places from the upserted values.

## Likely cause

Pinecone stores vectors as 32-bit floats. Values upserted as 64-bit get rounded. Small differences are expected storage behavior, not corruption.

## Confirm it

Compare magnitudes: if the difference is at the 1e-7 scale relative to the values, it is float32 rounding. If whole values are different, or signs flip, something else is wrong (wrong id mapping, double embedding, or a transform in your pipeline).

## Fix

1. Rounding-scale drift: no fix needed. If your application needs exact round-trips, keep the original vectors in your own store and use Pinecone for search only.
2. Large drift: audit the ingest pipeline for a second normalization or embedding pass, and verify id-to-vector mapping.

## Verify the fix

Fetch a sample of ids and assert max absolute difference against the source vectors is within float32 tolerance.