Some factors that affect GI: Processing (puffed cereals have a much higher GI than the grain they came from), ripeness of fruit (unripe bananas can have a GI of 43, where overripe ones have been clocked at 74), protein content (soy beans have a lower GI than other beans), fat content (peanuts have a very low GI), fiber (orange juice has a higher GI than oranges), and how small the particles are (whole grains have a relatively low GI, but grinding them into flour shoots up the GI).
One criticism of the glycemic index is that since it the scale was created on a standard amount of carbohydrate per food (50 grams), it doesn’t give people information about the amount of food they are actually eating. A common example is carrots. Carrots do have a high glycemic index, but to get 50 grams of carbohydrate from carrots, you have to eat 4 cups of chopped carrot. For this reason, the concept of the glycemic load was created, which takes serving size into account.
Related Question: Is the Glycemic Index Useful?