The team announced the deal Friday, an agreement that guarantees $3.5 million this season.
He can earn $250,000 each for 350, 400, 450, 500, 550 and 600 plate appearances, and $1 million for 650.
Garcia, coming off arthroscopic surgery on his right knee, hit a career-high 19 home runs last season but slumped to .236 with 49 RBI in 93 games after batting a career-best .330 with 18 homers and 80 RBI in 136 games in 2017, when he was an All-Star.
"I'm 100 percent now ... ready to go," Garcia said during a conference call, adding that he was attracted to the Rays because they're a competitive team and the Tampa Bay area is close to his offseason home in Miami.
The 27-year-old has a .271 career big league average with 76 home runs and 302 RBI on seven seasons with the White Sox and Detroit Tigers.
Garcia said injuries impacted his performance in 2018, but he's confident he can revert to his form of two years ago and help the Rays.
"I know what I can do. ... I just have to be healthy," he said.
To clear a roster spot, right-hander Oliver Drake was designated for assignment. Drake was claimed off waivers by the Rays from Minnesota on Nov. 1, claimed off waivers by Toronto on Nov. 6, and then purchased back by the Rays from the Blue Jays on Jan. 4 for $70,000.
Drake played for a record five teams last season: Milwaukee, Cleveland, the Los Angeles Angels, Toronto and Minnesota.